这段代码是否通用,或者只是我的系统?
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
locale system("");
locale::global(system);
wcin.imbue(system);
wstring data;
getline(wcin,data);
wcout.imbue(system);
wcout << data << L" length=" << data.length() << endl;
locale utfFile("en_US.UTF-8");
wofstream file("my_utf_file.txt");
file.imbue(utfFile);
file << data;
file << endl;
file.close();
return 0;
}
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
locale system("");
locale::global(system);
wcin.imbue(system);
wstring data;
getline(wcin,data);
wcout.imbue(system);
wcout << data << L" length=" << data.length() << endl;
locale utfFile("en_US.UTF-8");
wofstream file("my_utf_file.txt");
file.imbue(utfFile);
file << data;
file << endl;
file.close();
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是你的系统。区域设置名称不是 C++ 标准的一部分,因此
"en_US.UTF-8"
并不普遍有效。甚至不确定是否存在类似的语言环境。It's your system. Locale names are not part of the C++ standard, so
"en_US.UTF-8"
is not universally valid. It's not even certain that a locale similar to it exists.无法在没有文件系统的嵌入式系统中工作。
当然,或者没有安装该语言环境。
Won't work in an embedded system without a file system.
Or without that locale installed, of course.