如何使用C ++在单独的行中将Unicode字符存储在文本文件中?我尝试使用\n
和\r
;还有他们的hex
值。但是,在.txt
文件中\n
和\r
被视为垃圾值。
以下是代码段:
{
std::wofstream wof;
wof.imbue(std::locale(std::locale::empty(), new std::codecvt_utf16<wchar_t,
0x10ffff, std::generate_header>));
wof.open(L"file3.txt");
wof << L"Test.\x263a \x263c \x263d \x263e A:B:C, 我一个人来 人人都爱喝可乐。 " << endl;
wof << L"\n Another test. \x002c \x263a \263e" << endl;
wof << L"\n 我一个人来。 一个人 我一个人来 人人都爱喝可乐。" << endl;
wof << L" Test \x263a \x263c \x263d \x263e 我一个人来 人人都爱喝可乐。 " << endl;
wof << L"\n 我一个人来 人人都爱喝可乐。" << endl;
}
答案 0 :(得分:0)
如图所示以二进制文件打开文件并添加BOM标记L"\xFEFF"
以指示文件是UTF-16(LE)模式。使用此方法,您需要pubsetbuf
使用L"\r\n"
作为行尾
std::wofstream wof(L"file3.txt", std::ios::binary);
if(wof)
{
wchar_t buf[128];
wof.rdbuf()->pubsetbuf(buf, 128);
wof << L"\xFEFF";
wof << L"Test.\x263a \x263c \x263d \x263e A:B:C, 我一个人来 人人都爱喝可乐。\r\n";
wof << L"Another test. \x002c \x263a \263e\r\n";
}