【发布时间】:2011-01-17 07:31:12
【问题描述】:
我有一个包含很长的 unicode 字符串的文件。 我想将文件中的整个 unicode 字符串读入字符串(或 CString)。 我怎样才能做到这一点? 谢谢
【问题讨论】:
我有一个包含很长的 unicode 字符串的文件。 我想将文件中的整个 unicode 字符串读入字符串(或 CString)。 我怎样才能做到这一点? 谢谢
【问题讨论】:
使用 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 构造函数中。大多数情况下这是有效的。
【讨论】:
ifstream file("filename.txt");
char data[1024];
file.read(data, 1024);
CString str(data);
【讨论】:
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" ;
}
【讨论】: