C++ 使用最少的代码将字符串转换为 wstring 并返回

Posted

技术标签:

【中文标题】C++ 使用最少的代码将字符串转换为 wstring 并返回【英文标题】:C++ convert string to wstring and back with Minimal code 【发布时间】:2012-04-16 04:56:59 【问题描述】:

以下代码将string 转换为wstring,我需要调用我正在使用的词干提取方法。但是,我存储词干的map 充满了strings。我查看了一些关于 SO 的解决方案,从wstringstring 的许多转换都是大约十几行代码。 有什么方法可以快速(最好是内联或类似)从 string 转换为 wstring 并返回?

string ANSIWord("documentation");
wchar_t* UnicodeTextBuffer = new wchar_t[ANSIWord.length()+1];
wmemset(UnicodeTextBuffer, 0, ANSIWord.length()+1);
mbstowcs(UnicodeTextBuffer, ANSIWord.c_str(), ANSIWord.length());
wWord = UnicodeTextBuffer;

否则,我会考虑将我的map 和其他方法转换为使用wstring

编辑:

顿悟:我决定将整个转换方法转换放在自己的方法中,从而将其减少到所需的一行。但是,出于好奇,我仍然想知道/以供将来参考。

【问题讨论】:

不是真的,如果你想做对的话。毕竟,您需要检查错误并以 some 方式计算所需的输出长度。 见The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) 【参考方案1】:

您为什么不编写一个包含大约 12 行代码的函数来进行转换,然后调用该函数?

【讨论】:

以上是关于C++ 使用最少的代码将字符串转换为 wstring 并返回的主要内容,如果未能解决你的问题,请参考以下文章

c++:以编程方式将符号转换为代码行号

使用 ostringstream 或 stringstream 将 C++ Int 转换为字符串

C++ 将字符串转换为双精度

如何将字符串转换为具有最少删除字符串字符数的回文?

当我们使用winapis将字符串作为参数传递时,如何将c#字符串转换为c++字符串

将 C++ 字符串操作转换为 C 的问题 [关闭]