所以我现在正在学习C ++ 11,而且我已经掌握了它。我想使用不同的语言,因为我是越南语,我想制作一个使用越南字符的C ++程序。
那么如何以与显示英语相同的方式显示越南语字符,如下所示:
cout << "Hello. This is English" << endl; //English
cout << "Chào. Đây là tiếng Việt." << endl; //Vietnamese
我听说C ++有<locale>
。它有助于使越南人物出现吗?
答案 0 :(得分:8)
您可能遇到了环境问题。您没有说明您正在运行的平台/环境,但请采用以下程序:
#include <iostream>
#include <cstdlib>
int main()
{
std::cout << u8"Chào thế giới!" << std::endl;
return EXIT_SUCCESS;
}
这将从Mac OS X上的iTerm产生以下输出:
Chào thế giới!
对于其他(非unicode)环境,使用相同的代码,您可能会在输出中获得UTF-8字符解释为ASCII。我不知道Windows命令行会产生什么,但如果您使用的是IDE,那么您的IDE可能会也可能不会呈现UTF-8,无论您的shell是否执行。
这是一个网络示例。
https://code.sololearn.com/c39N9RN6b4Md/#cpp收益率:
Chào thế giới!
但http://ideone.com/OkkUZs运行完全相同的代码会产生:
Chào thế giới!
也许值得指出的是,在C ++中正确处理UTF-8字符串,计算“字符”,确保你的字符串是有效的UTF-8等,你可能想要使用Unicode库 - 使用Unicode是非平凡的。
就我个人而言,我发现UTFCPP和TinyUTF8都是优秀的图书馆 - 相当小,简单而有效。
希望有所帮助。
答案 1 :(得分:3)
#include <iostream>
#include <io.h>
#include <fcntl.h>
int main() {
_setmode(_fileno(stdout), _O_U16TEXT);
std::wcout << L"Chào. Đây là tiếng Việt.";
}
这是适用于Windows的解决方案。不幸的是,它无法移植到其他平台。