从文件中读取时遇到问题.以下是一些示例代码:
std::for_each(vec.begin(), vec.end(), [&](std::string str1) {
//... split the string up by spaces into vector "split"
for (auto& str : split) {
std::cout << str << "\n";
std::cout << str[0] << "\n";
}
});
Run Code Online (Sandbox Code Playgroud)
所以基本上我在一行上打印出拆分的每个元素,然后打印第一个字符.我得到的是这个:
“test test test
?
Run Code Online (Sandbox Code Playgroud)
第一行是整行str,第二行应该是第一行.但是,它会打印一个?.即使使用a std::string也会得到相同的结果:
for (auto& str : split) {
std::cout << str << "\n";
std::cout << std::string(1, str[0]) << "\n";
}
Run Code Online (Sandbox Code Playgroud)
我正在使用clang++ -std=c++11我的设置.有没有人见过这个?
你的字符串可能没有编码一个元素=>一个字符.我能够在这里重现你的问题,它看起来像特殊的引号采用前三个字符串字节,所以这将打印正确:
std::cout << s.substr(0, 3);
Run Code Online (Sandbox Code Playgroud)
你的情况可能有点不同,但我猜你和科里鲁都是UTF-8.具体来说,该字符看起来就是这个,"左双引号",UTF-8值为0xE2809C.