gpt4 book ai didi

c++ - 如何将箭头符号写入文件然后读回?

转载 作者:行者123 更新时间:2023-11-28 00:30:57 27 4
gpt4 key购买 nike

引用资料 http://www.fileformat.info/info/unicode/char/2192/index.htm说右箭头在 unicode 字符集中是 0x2192,所以我尝试用几种不同的方式将值写入文件:

#include <fstream>

using namespace std;

int main()
{
ofstream out("out.txt");
wofstream wout("wout.txt");

out << '0x2192' << endl;
out << '\u2192' << endl;
out << L'\u2192' << endl;
out << u'\u2192' << endl;

wout << '0x2192' << endl;
wout << '\u2192' << endl;
wout << L'\u2192' << endl;
wout << u'\u2192' << endl;

return 0;
}

它只打印出数字,没有箭头符号。我究竟做错了什么? PS我也想稍后再读一遍这个角色。提前致谢。

最佳答案

经过一些修改:

#include <fstream>
#include <locale>

using namespace std;

int main() {
// This is the real trick, make the wfostream to print wide characters as
// UTF-8
// what we're going to do is to create a locale that has the ctype category
// copied from the "en_US.UTF-8"
std::locale loc=std::locale(std::locale(),"en_US.UTF8",std::locale::ctype);
ofstream out("out.txt");
// and now add the locale to the stream
out.imbue(loc);
wofstream wout("wout.txt");
// and now add the locale to the stream
wout.imbue(loc);

//out << '0x2192' << endl; // character constant too long (did not compile on g++)
//out << '\u2192' << endl; // character constant too long (did not compile on g++)
out << L'\u2192' << endl; // prints 8594
out << u'\u2192' << endl; // prints 8594
out << (wchar_t) L'\u2192' << endl; // prints 8594
out << (wchar_t) u'\u2192' << endl; // prints 8594

//wout << '0x2192' << endl; // character constant too long
//wout << '\u2192' << endl; // character constant too long
wout << 8594 << endl; // prints 8594
wout << L'\u2192' << endl; // prints ->
wout << u'\u2192' << endl; // prints 8594
wout << (wchar_t) 8594 << endl; // prints ->
wout << (wchar_t) L'\u2192' << endl; // prints ->
wout << (wchar_t) u'\u2192' << endl; // prints ->
return 0;
}

上面是在Ubuntu linux上执行的,用g++编译

关于c++ - 如何将箭头符号写入文件然后读回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22961395/

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