【问题标题】:MFC read unicode string from file into stringMFC 将文件中的 unicode 字符串读入字符串
【发布时间】:2011-01-17 07:31:12
【问题描述】:

我有一个包含很长的 unicode 字符串的文件。 我想将文件中的整个 unicode 字符串读入字符串(或 CString)。 我怎样才能做到这一点? 谢谢

【问题讨论】:

标签: c++ mfc


【解决方案1】:

使用 MFC 的 CFile 打开文件 调用 CFile::GetStatus 获取文件大小http://msdn.microsoft.com/en-us/library/fa0hc0ht%28VS.80%29.aspx 分配获取的文件大小的 BYTE 数组并使用 CFile::Read 获取它 http://msdn.microsoft.com/en-us/library/hwbccf8z%28v=VS.80%29.aspx

现在您需要处理一个 BOM 问题。检查 BOM 字符是否存在于缓冲区的开头。由于您没有指定文件是什么 unicode 格式,因此您需要参考 http://en.wikipedia.org/wiki/Byte_order_mark 来确定它们是什么。在继续之前删除 BOM 字符。

现在您可以尝试将原始缓冲区放入 CString 构造函数中。大多数情况下这是有效的。

【讨论】:

    【解决方案2】:
    ifstream file("filename.txt");
    char data[1024];
    file.read(data, 1024);
    CString str(data);
    

    【讨论】:

      【解决方案3】:
      CString lv_szResult;
      
      CStdioFile lv_InputFile( c_szFile, CFile::modeRead | CFile::typeUnicode );
      CString lv_szLine ;
      while( lv_InputFile.ReadString( lv_szLine ) == TRUE )
      {
        lv_szResult += lv_szLine + "\n" ;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-04
        • 1970-01-01
        • 1970-01-01
        • 2014-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多