2012-07-02 53 views
1

請幫我有人要轉換的UnicodeString成字符串c + +的UnicodeString轉換成字符串

這是怎麼了我得到的UnicodeString

UnicodeString _str = OpenDialog1->FileName; 

或者,如果有可能寫入文件中的Unicode字符串ifstream的或類似的東西那?

謝謝

+0

您在詢問之前做過搜索,是不是? –

+0

是im searchin已經1小時... – user525717

+0

[UnicodeString :: t_str方法](http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/System__UnicodeString__t_str.html),是的你也可以寫入文件,只需在文件前加上['BOM'](http://en.wikipedia.org/wiki/Byte_order_mark)。 –

回答

5

根據您的需求,分配UnicodeStringAnsiStringUTF8String,然後寫你的文件,而不是原來的UnicodeString本身:

UnicodeString _str = OpenDialog1->FileName; 
AnsiString _astr = _str; 

或者:

UnicodeString _str = OpenDialog1->FileName; 
UTF8String _ustr = _str; 

要將AnsiString/UTF8String傳遞給STL函數,您必須:

1)使用c_str()方法:

stream << _astr.c_str(); 

2)建立一個臨時std::string:在AnsiString的情況下

stream << std::string(_astr.c_str(), _astr.Length()); 

3)只,指定VCL_IOSTREAM定義您的項目,以使AnsiString類型自身<<<>>運營商:

stream << _astr; 
2

將字符串轉換爲字節需要一些編碼。有很多這樣的庫,所以它取決於你使用的框架。

作爲一種替代方法,您可以使用wofstreamwchar_t字符寫入流中。

0
std::string converted; 
us.toUTF8String(converted); 

我們是(ICU)UnicodeString