问一个ofstream 与 unicode 的问题

时间:2021-12-05 23:50:50
用 ofstream 生成一个unicode 文件

ofstream 有没有对应 wchar_t 或者 wstring 的版本?

5 个解决方案

#1


废材了

wofstream 就是

#2


定义一个宏

#define _UNICODE

#3


typedef basic_string<char, char_traits<char>, allocator<char> >
string;
typedef basic_string<wchar_t, char_traits<wchar_t>,
allocator<wchar_t> > wstring;
以上是標準定義,這個與ofstream沒有任何的關係,你如果要寫入unicode的字符,知需要使用wstring即可
以下是一種比較靈活的定義方法
#ifdef UNICODE
typedef std::wstring tstring;
#else
typedef std::string tstring;
#endif

tstring st=.....;

#4


en

不用wofstream的话,似乎写入文件的都是unicode 码而不是字符
但是我用ultraedit打开生成的文件,发现还是ascii码亚

是不是我的程序有问题?

std::wofstream fp( "config.ini", std::ios::out);

if( !fp)
{
return false;
}

fp << L"; [马赛克]\n"
   << L"\n"
   
   << L"[DISPLAY]\n"
   << L"DisplayMode=1\n"
   << L"Fullscreen=0\n"
   << L"\n"
   
   << std::endl;

fp.close();

#5


JC说,底层对程序员的灵魂有好处


#1


废材了

wofstream 就是

#2


定义一个宏

#define _UNICODE

#3


typedef basic_string<char, char_traits<char>, allocator<char> >
string;
typedef basic_string<wchar_t, char_traits<wchar_t>,
allocator<wchar_t> > wstring;
以上是標準定義,這個與ofstream沒有任何的關係,你如果要寫入unicode的字符,知需要使用wstring即可
以下是一種比較靈活的定義方法
#ifdef UNICODE
typedef std::wstring tstring;
#else
typedef std::string tstring;
#endif

tstring st=.....;

#4


en

不用wofstream的话,似乎写入文件的都是unicode 码而不是字符
但是我用ultraedit打开生成的文件,发现还是ascii码亚

是不是我的程序有问题?

std::wofstream fp( "config.ini", std::ios::out);

if( !fp)
{
return false;
}

fp << L"; [马赛克]\n"
   << L"\n"
   
   << L"[DISPLAY]\n"
   << L"DisplayMode=1\n"
   << L"Fullscreen=0\n"
   << L"\n"
   
   << std::endl;

fp.close();

#5


JC说,底层对程序员的灵魂有好处