gpt4 book ai didi

C++ 希腊字符字符串和 .at() 运算符

转载 作者:行者123 更新时间:2023-11-30 01:39:06 25 4
gpt4 key购买 nike

使用英文字符很容易提取,也就是说,从字符串中提取一个字符,例如,以下代码应该将 y 作为输出:

string my_word;
cout << my_word.at(1);

如果我尝试对希腊字符做同样的事情,我会得到一个有趣的字符:

string my_word = "λογος";
cout << my_word.at(1);

输出:


我的问题是:我该怎么做才能使 .at() 或任何类似的函数起作用?

非常感谢!

最佳答案

std::string 是一个窄字符序列 char。但是在使用 utf-8 语言环境时,许多国家字母表使用一个以上的字符来编码单个字母。因此,当您使用 s.at(0) 时,您会得到整个字母的一半甚至更少。您应该使用宽字符:std::wstring 而不是 std::stringstd::wcout 而不是 std::coutL"λογος" 作为字符串文字。

此外,您应该在使用 std::locale 进行任何打印之前设置正确的语言环境。

此案例的代码示例:

#include <iostream>
#include <string>
#include <locale>

int main(int, char**) {
std::locale::global(std::locale("en_US.utf8"));
std::wcout.imbue(std::locale());
std::wstring s = L"λογος";
std::wcout << s.at(0) << std::endl;
return 0;
}

关于C++ 希腊字符字符串和 .at() 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46500419/

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