C++ 逐行读取文件,但行类型为 CString 或 TCHAR

Posted

技术标签:

【中文标题】C++ 逐行读取文件,但行类型为 CString 或 TCHAR【英文标题】:C++ read a file line by line but line type is CString or TCHAR 【发布时间】:2014-04-07 10:54:11 【问题描述】:

我得到以下示例

    CString line[100];

    //string line;
    ifstream myfile (_T("example.txt"));
    if (myfile.is_open())
    
       while ( getline (myfile,line) )
       
          cout << line << '\n';
       
       myfile.close();
     

那个“行”怎么能把值存储到CString或者TCHAR类型。我收到这样的错误:

错误 C2664:'__thiscall std::basic_ifstream >::std::basic_ifstream >(const char *,int)'

请帮帮我:)

【问题讨论】:

读取到 std::string (std::string line;) 然后按照 MSDN 的建议转换为 CString - msdn.microsoft.com/en-us/library/ms235631(v=vs.80).aspx 你能举个例子吗? 【参考方案1】:

首先,这个声明:

CString line[100];

定义了一个 数组 100 CStrings:你确定你想要那个吗?

或者也许您只是希望 一个 CString 将每一行读入?

// One line
CString line;

您可以选择将这些行读入std::string,然后将结果转换为CString

string line;
ifstream myfile ("example.txt");
if (myfile.is_open())

   while (getline(myfile, line))
   
      // Convert from std::string to CString.
      //
      // Note that there is no CString constructor overload that takes
      // a std::string directly; however, there are CString constructor
      // overloads that take raw C-string pointers (e.g. const char*).
      // So, it's possible to do the conversion requesting a raw const char*
      // C-style string pointer from std::string, calling its c_str() method.
      // 
      CString str(line.c_str());

      cout << str.GetString() << '\n';
   
   myfile.close();

【讨论】:

我收到一个错误:错误 C2039: 'GetString' : is not a member of 'CString',如何解决? @MyrdaSahyuti:你用的是什么编译器?? GetString() 至少从 VS2005 开始就是 CString 的成员。不管怎样,试试cout &lt;&lt; static_cast&lt;const TCHAR*&gt;(str) &lt;&lt; '\n' 我使用的是visual c++ 6.0 @MyrdaSahyuti:我怀疑 :)【参考方案2】:

std::getline()的第二个参数需要std::string,所以先用std::string,再转换成CString

string str_line;
ifstream myfile (_T("example.txt"));
if (myfile.is_open())

   while ( getline (myfile, str_line) )
   
      CString line(str_line.c_str());
      cout << line << '\n';
   
   myfile.close();
 

【讨论】:

以上是关于C++ 逐行读取文件,但行类型为 CString 或 TCHAR的主要内容,如果未能解决你的问题,请参考以下文章

使用fstream将文件逐行读取到C++中的二维向量中[重复]

C++中怎么逐行读取数据

C++ 逐行读取文件,然后使用分隔符分割每一行

C++文件读写操作逐字符读取文本和逐行读取文本

如何从 C++ 中的文本文件中逐行读取整数? [复制]

C++逐行解析Txt文本文件,并将相应的字符串转换为double等类型