我的问题是,如何能正确的一行一行的读取unicode格式的txt文件的内容?
我的目的是一次一行的读取unicode的txt文件
用cstdiofile读取以后,显示出来的是乱码
请问如何能正确读到每一行的内容?
谢谢!

解决方案 »

  1.   

    最好用CArchive来读取一行文件,然后用WCHAR_t的变量两个byte一读就可以了。
      

  2.   

    发送者 cheng_young 发送时间 2003-7-24 17:26:29 删除  回复  
    内容 参考CStdioFile的实现, 将_fgetts改为fgetws
           for (;;)
           {
                  lpszResult = _fgetts(lpsz, nMaxSize+1, m_pStream);
                  rString.ReleaseBuffer();              // handle error/eof case
                  if (lpszResult == NULL && !feof(m_pStream))
                  {
                         clearerr(m_pStream);
                         AfxThrowFileException(CFileException::generic, _doserrno,
                                m_strFileName);
                  }              // if string is read completely or EOF
                  if (lpszResult == NULL  ¦ ¦
                         (nLen = lstrlen(lpsz)) < nMaxSize  &brvbar; &brvbar;
                         lpsz[nLen-1] == '\n')
                         break;              nLen = rString.GetLength();
                  lpsz = rString.GetBuffer(nMaxSize + nLen) + nLen;
           }
     
    编号: 34 发送者 cheng_young 发送时间 2003-7-24 11:13:14 删除  回复  
    内容 CFile file;
    file.Open("c:\\test.txt", CFile::modeReadWrite);
    DWORD len = file.GetLength();
    char *buf = new char[len+2];
    file.Read(buf, len);
    buf[len] = 0;
    buf[len+1] = 0;
    file.Close();wchar_t *wch = (wchar_t *)buf;
    if (wch[0] == 0xFEFF)
           wch++;len = WideCharToMultiByte(CP_ACP, 0, wch, -1, NULL, 0, NULL, NULL);
    char *pBuf = new char[len];
    WideCharToMultiByte(CP_ACP, 0, wch, -1, pBuf, len, NULL, NULL);
    MessageBox(pBuf);delete []pBuf;
    delete []buf;