C++ std::string::at()

C++ std::string::at()

我想打印字符串的第一个字母。

#include <iostream>
#include <string>

using namespace std;

int main() {
  string str = "다람쥐 헌 쳇바퀴 돌고파.";
  cout << str.at(0) << endl;
}

我希望 '다' 像 java 一样打印,但是 '?' 被打印了。

我该如何解决?

您在 str 中的文本 -- 它是如何编码的?

不幸的是,您需要知道这一点才能获得第一个“字符”。 std::string class 只处理字节。字节如何变成字符是一个比较大的话题。

您可能正在寻找的魔法词是 UTF-8。请参阅此处了解更多信息:

如果你想自己走这条路,请看这里:Extract (first) UTF-8 character from a std::string

如果您真的感兴趣,这里有一个 hour-long 视频,它实际上很好地解释了文本编码:https://www.youtube.com/watch?v=_mZBa3sqTrI