在我的程序中,我std::string从另一个函数中获取一个值,该函数从不同来源读取字符串,这里的字符串总是包含非 ASCII 字符。
我正在使用 Visual Studio 调试程序。有时当字符串内容在 VS debugger 中看起来正确时,下一步就可以了(例如将此字符串用作输入和输出的目录)。但有时字符串内容看起来不正确,这会导致下一步出错。
目前我QString用作将“不正确”字符串转换为“正确”字符串的桥梁,代码如下。
// get string from somewhere else, sometimes correct sometimes incorrect
string str = getString();
QString strQ = QString::fromStdString(str);
str = string(strQ.toLocal8bit);
但有时 str 在转换之前已经“正确”,在这种情况下,如果我用上面的代码转换它,它就出错了。
所以我想这里的问题是我怎么知道一个是否std::string有正确的编码?因为我不能总是用眼睛来判断它。
是的,编码是 Stack Overflow 上广泛讨论的话题,但我仍然找不到合适的解决方案。
PS
正确的字符串值看起来像孙夏^4735在 VS 调试器中,错误的字符串值看起来像????。</p>