将 STL unicode 字符串转换为 wxString 给出空字符串
Converting STL unicode string to wxString gives empty string
我的代码是:
#include <string>
#include <iostream>
#include <wx/string.h>
int main(int n, char** c) {
std::string a = "你好";
wxString b = a;
std::cerr <<a.length()<<"/"<< b.Len()<<"\n";
}
我希望结果类似于“6/6”,但我得到的是“6/0”。也就是说,b 是空的。我做错了什么?
我试过其他转换,但它们也不起作用。
编译者:
g++ `wx-config --cxxflags --libs` -std=c++11 -o string-test string-test.cpp
wx 版本为 3.0.0.0。 gcc 版本 4.9.2 20141101 (Red Hat 4.9.2-1) (GCC)。
wxString
默认使用当前语言环境来解释其输入,对于您的程序,此语言环境是默认的 "C",因为您永远不会更改它。将其设置为与源文件使用的编码相对应的任何语言环境,以使代码按预期工作。
两个更好的选择是:
- 使用
std::wstring = L"..."
.
- 如果您确信您的来源始终采用 UTF-8,请使用
wxString::FromUTF8("...")
。
我的代码是:
#include <string>
#include <iostream>
#include <wx/string.h>
int main(int n, char** c) {
std::string a = "你好";
wxString b = a;
std::cerr <<a.length()<<"/"<< b.Len()<<"\n";
}
我希望结果类似于“6/6”,但我得到的是“6/0”。也就是说,b 是空的。我做错了什么?
我试过其他转换,但它们也不起作用。
编译者:
g++ `wx-config --cxxflags --libs` -std=c++11 -o string-test string-test.cpp
wx 版本为 3.0.0.0。 gcc 版本 4.9.2 20141101 (Red Hat 4.9.2-1) (GCC)。
wxString
默认使用当前语言环境来解释其输入,对于您的程序,此语言环境是默认的 "C",因为您永远不会更改它。将其设置为与源文件使用的编码相对应的任何语言环境,以使代码按预期工作。
两个更好的选择是:
- 使用
std::wstring = L"..."
. - 如果您确信您的来源始终采用 UTF-8,请使用
wxString::FromUTF8("...")
。