gpt4 book ai didi

c++ - 在 C++ 中不在整个 std::string 中打印引号给出负 ASCII 值?

转载 作者:行者123 更新时间:2023-11-30 01:19:08 26 4
gpt4 key购买 nike

我在读取文件时遇到问题。这是一些示例代码:

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";
}
});

所以基本上我在一行上打印 split 的每个元素,然后打印第一个字符。我得到的是:

“test test test
?

其中第一行是整个str,第二行应该是第一个字符。但是,它会打印 ? 。即使使用 std::string 也会得到相同的结果:

for (auto& str : split) {
std::cout << str << "\n";
std::cout << std::string(1, str[0]) << "\n";
}

我正在使用 clang++ -std=c++11 作为我的设置。还有其他人看到这个吗?

最佳答案

您的字符串可能未编码一个元素 => 一个字符。我能够重现您的问题 here看起来特殊的引号占据了前三个字符串字节,因此可以正确打印它:

std::cout << s.substr(0, 3);

你的情况可能有点不同,但我猜你和 Coliru 都是 UTF-8。具体来说,该字符看起来是 this one ,“左双引号”,UTF-8 值为 0xE2809C。

关于c++ - 在 C++ 中不在整个 std::string 中打印引号给出负 ASCII 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21346546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com