2016-03-03 341 views
-1

我竭力要找到一种方法,同时读取文件到一行的末尾,如(C++)如何继续读取文件的下一行,然后停止在文件的末尾?

狗\ n 猫\ n 猪

和每个字符存储到一个数组。虽然我可以为一行做到这一点,但我无法解决如何进入下一行(即从狗到猫)并仍然注册文件的结尾。 这是我的代码到目前为止;

searchFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
      char next; 
      while (searchFile.get(next)) 
      { 
       if (next == '\n') // If the file has been opened in 
       { 
        for (int i = 0; i <= searchTempSize; i++) // ... For each character within the total length of the string ... 
        { 
         searchCharArray[i] = searchArray[i]; 
         cout << searchCharArray[i] << endl; 
        } 
       }  
      } 

编辑为了清楚起见:我需要读取文件并将每个单词的字符存储为一个数组。但是,该文件在新行上包含每个单词。我似乎无法找到读到下一行的方法,而不是结束。

+1

我不明白你要做什么。 – erip

+3

'std :: getline()'怎么样? –

回答

4

传统的做法是使用std::getline。这将返回对流的引用;当被转换为布尔值时,这指示流上的最后操作是否成功,例如非文件结束。因此,要将所有行加载到字符串数组中,例如,您可以执行以下操作:

std::string line; 
std::vector<string> lines; 
while (std::getline(searchFile, line)) { 
    lines.push_back(line); 
} 
+0

这工作!谢谢!但是,我收到一个调试断言错误,但我确信这将更容易纠正。 – fauliath

相关问题