max*_*sen 5 c++ unicode locale getline cyrillic
我正在尝试从.txt文件中读取已保存为Unicode的行.这就是我在做的方式:
wifstream input;
string path = "test.txt";
input.imbue(locale(input.getloc(),
new codecvt_utf16<wchar_t, 0x10ffff, consume_header>));
input.open(path);
if (input.is_open())
{
wstring line;
input.seekg( 1 , ios_base::beg);
getline(input, line);
}
Run Code Online (Sandbox Code Playgroud)
它适用于具有拉丁字符的文件.但对于西里尔文件,我得到奇怪的符号而不是空格和相邻的字符.
例如:
输入文件中的内容:
ГосдепСШАосудилнападениена
我得到了什么:
︓осдепР!ШАР>судилР=ападениеР=а
我究竟做错了什么?
嗯,找到方法了:
FILE *input= _wfopen(L"test.txt", L"rb");
wchar_t line[1000];
test.txtfgetws(line, 1000, input);
Run Code Online (Sandbox Code Playgroud)
像这样工作得很好。我真是太愚蠢了,没有先尝试一下。所以谢谢大家。
| 归档时间: |
|
| 查看次数: |
681 次 |
| 最近记录: |