sth*_*sth 242
如果使用STL兼容性编译,则QString有一个静态方法将a转换std::string为QString:
std::string str = "abc";
QString qstr = QString::fromStdString(str);
Run Code Online (Sandbox Code Playgroud)
Kam*_*zot 130
如果是字符串,则表示std::string您可以使用此方法执行此操作:
QString QString :: fromStdString(const std :: string&str)
std::string str = "Hello world";
QString qstr = QString::fromStdString(str);
Run Code Online (Sandbox Code Playgroud)
如果用字符串表示Ascii编码,const char *那么你可以使用这个方法:
QString QString :: fromAscii(const char*str,int size = -1)
const char* str = "Hello world";
QString qstr = QString::fromAscii(str);
Run Code Online (Sandbox Code Playgroud)
如果您const char *使用可以使用QTextCodec :: codecForLocale()读取的系统编码进行编码,则应使用此方法:
QString QString :: fromLocal8Bit(const char*str,int size = -1)
const char* str = "za?ó?? g??l? ja??"; // latin2 source file and system encoding
QString qstr = QString::fromLocal8Bit(str);
Run Code Online (Sandbox Code Playgroud)
如果你有const char *UTF8编码,那么你需要使用这个方法:
QString QString :: fromUtf8(const char*str,int size = -1)
const char* str = read_raw("hello.txt"); // assuming hello.txt is UTF8 encoded, and read_raw() reads bytes from file into memory and returns pointer to the first byte as const char*
QString qstr = QString::fromUtf8(str);
Run Code Online (Sandbox Code Playgroud)
还有const ushort *包含UTF16编码字符串的方法:
QString QString :: fromUtf16(const ushort*unicode,int size = -1)
const ushort* str = read_raw("hello.txt"); // assuming hello.txt is UTF16 encoded, and read_raw() reads bytes from file into memory and returns pointer to the first byte as const ushort*
QString qstr = QString::fromUtf16(str);
Run Code Online (Sandbox Code Playgroud)
sho*_*osh 13
替代方式:
std::string s = "This is an STL string";
QString qs = QString::fromAscii(s.data(), s.size());
Run Code Online (Sandbox Code Playgroud)
这样做的好处是不使用.c_str()哪个可能导致std::string复制自身,以防'\0'在最后没有地方添加.
wil*_*ell 10
std::string s = "Sambuca";
QString q = s.c_str();
Run Code Online (Sandbox Code Playgroud)
警告:如果std::string包含\0s,则无效.