C++ 如何获取字符串输出的宽度?

C++ 如何获取字符串输出的宽度?,c++,string,C++,String,考虑 #include <string> #include <iostream> int main() { std::string test="αλφα"; std::cout << "size() of '" << test << "' = " << test.size() << std::endl; } #包括 #包括 int main() { std::string test=“αλ

考虑

#include <string>
#include <iostream>

int main()
{ 
    std::string test="αλφα";
    std::cout << "size() of '" << test << "' = " << test.size() << std::endl;
}
#包括
#包括
int main()
{ 
std::string test=“αλφα”;

std::cout这里的问题与字符串相关的编码有关

在我看来,这类似于UTF-8编码(第一个字符是而不是小写的
'a'
)。在这种编码中,您呈现的字符每个占用两个字节,这就解释了答案

UTF-8编码得到了C++11标准的广泛支持(相当优雅的是,UTF-8在任何文本流中都没有任何零字节,如Windows Unicode)-您可以使用
std::string
,尽管长度通常会被低估-但在编辑器中直接创建该类型的字符串文字时必须小心


更多阅读:

是否回答了您的问题?我不确定dup。OP可能需要一个通用的,而不是仅UTF-8的答案。有趣的阅读@YSC同意,在标准库中没有任何有用的内容,所以请使用您自己的简单解码器。只有OP可以告诉我们他们的代码是unicode UTF-8还是特定的MBC,但我建议使用UTF-8如果你有一个选择,因为它在Windows上是“无处不在”, STD::WScING/Ung>可以帮助。当你说它是“广泛支持”时,你是指有广泛的支持,或者C++承认它的退出可以使用它(有点)。?@YSC:的确可以,尽管总的来说,我建议使用UTF-8。我认为它的UTF-8没有小写字母“a”,而是两个字母“α”(希腊字母)。而且,这是在MAC上,绝对没有微型软件。@Quentin:不管怎样,它都充满了该死的NUL字符!