在unicode中将WCHAR数组转换为std :: string?

时间:2016-11-24 04:26:15

标签: c++ string unicode wchar

我正在使用win32应用程序,并且有一个接受unicode文本输入的编辑控件。我使用以下代码将文本转换为std::string

WCHAR out[50] = {};
GetDlgItemTextW(hwnd, ID_Edit, out, 50);
wstring myWString(out);
string myString(ws.begin(), ws.end());

在dubugger中,当输入为unicode文本时,我可以看到myWString正常,但myString已被破坏。

如何正确转换?

修改

好的,而不是愚弄string,我改用wstring。 但另一个问题出现了:

我有另一个代码正在使用stringcoutcin来获取用户输入,现在是wstringwcin和{{1打破非ASCII文本输入和输出部分......

我的代码是:

wcout

更改为:

string myString;
//...
cin >> myString;
//...
cout << myString;

如果用户使用非ASCII字符,则输入和输出文本已损坏。

1 个答案:

答案 0 :(得分:0)

好的,谷歌周围,我终于可以在没有unicode问题的情况下一起使用cin和wstring。 我添加了这些行:

import random

def generate_the_word(word_list):
    return random.choice(word_list)

def main():
    infile = open("words.txt","r")
    lines = infile.readlines()
    infile.close()
    print generate_the_word(lines)

main()

现在wcin好了:

setlocale(LC_ALL, "");
ios_base::sync_with_stdio(false);
wcin.imbue(locale(""));
wcout.imbue(locale(""));