【问题标题】:C++ convert UnicodeString into StringC ++将UnicodeString转换为String
【发布时间】:2012-07-02 17:35:33
【问题描述】:

请帮我把 unicodestring 转换成字符串

这就是我得到 unicodestring 的方式

UnicodeString _str = OpenDialog1->FileName;

或者是否可以使用 ifstream 或类似的东西写入文件 unicode 字符串?

谢谢

【问题讨论】:

  • 您在询问之前进行了搜索,不是吗?
  • 是的,我已经搜索了 1 小时...
  • UnicodeString::t_str Method,是的,你也可以写入文件,只需在文件前加上BOM
  • 远离t_str() 方法。使用起来很危险,因为它会修改 UnicodeString 的内部数据,并且无论如何在更高版本的 C++Builder 中已被删除。

标签: string unicode utf-8 c++builder stdstring


【解决方案1】:

根据您的需要,将UnicodeString 分配给AnsiStringUTF8String,然后将其写入您的文件而不是原来的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:

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

3) 仅在 AnsiString 的情况下,在您的项目中指定 VCL_IOSTREAM 定义以启用 AnsiString 自己的 &lt;&lt;&lt;&gt;&gt; 运算符:

stream << _astr;

【讨论】:

    【解决方案2】:

    将您的字符串转换为字节需要一些编码。有各种库可以执行此操作,因此这取决于您使用的框架。

    作为替代方案,您可以使用 wofstreamwchar_t 字符写入流。

    【讨论】:

      【解决方案3】:
      std::string converted;
      us.toUTF8String(converted);
      

      我们是 (ICU) UnicodeString

      【讨论】:

        猜你喜欢
        • 2015-01-09
        • 1970-01-01
        • 1970-01-01
        • 2012-07-19
        • 1970-01-01
        • 1970-01-01
        • 2011-05-31
        • 2012-12-12
        相关资源
        最近更新 更多