【发布时间】:2013-03-21 14:21:12
【问题描述】:
我有一个 wstring,将它转换为 \u043d\u043e\u043c\u0430 等转义形式的字符串的最佳方法是什么?
下面的一个可行,但似乎不是最好的:
string output;
for (wchar_t chr : wtst) {
char code[7];
sprintf(code,"\\u%0.4X",chr);
output += code;
}
【问题讨论】:
-
如果它“似乎不是最好的”,我可以问一下你在 (a) 将它与什么进行比较,以及 (b) 你为什么不使用 that我>?
-
它并不紧凑,需要几行代码。我认为在 boost 或 std 中可能已经有一些单线转换器。
-
标准库中没有这个转换器,如果在boost中有一个转换器,它很难比六行实现代码更紧凑。 caller 方(你)当然会被显着压缩,比例约为。如果存在这样的转换器确实,则为 83%。再说一次,引入的依赖肯定会大于六行。你能让this更有效率吗?一定。从
.reserve()ing 开始。 -
@WhozCraig 你能把你的评论作为答案吗?我会接受的。