逐行读取文件到变量和循环

时间:2012-11-23 17:00:33

标签: c++ file-handling file-io

我有一个phone.txt,如:

09236235965
09236238566
09238434444
09202645965
09236284567
09236235965
..and so on..

如何在C ++中逐行处理此数据并将其添加到变量中。

string phonenum;

我知道我必须打开文件,但是这样做之后,如何访问文件的下一行呢?

ofstream myfile;
myfile.open ("phone.txt");

并且关于变量,进程将循环,它将使phonenum变量成为当前行从phone.txt进行处理。

如果读取第一行就好了phonenum是第一行,处理所有内容并循环;现在phonenum是第二行,处理所有内容并循环直到文件最后一行的结尾。

请帮忙。我是C ++的新手。感谢。

3 个答案:

答案 0 :(得分:5)

请在线阅读评论。他们将解释正在发生的事情,以帮助您了解其工作原理(希望如此):

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(int argc, char *argv[])
{
    // open the file if present, in read-text-mode.
    ifstream fs("phone.txt");

    // variable used to extract strings one by one.
    string phonenum;

    // extract a string from the input, skipping whitespace
    //  including newlines, tabs, form-feeds, etc. when this
    //  no longer works (EOF or bad file, take your pick) the
    //  expression will return false
    while (fs >> phonenum)
    {
        // use your phonenum string here.
        cout << phonenum << endl;
    }

    // close the file on the chance you actually opened it.
    fs.close();

    return EXIT_SUCCESS;
}

答案 1 :(得分:3)

简单。首先,请注意您需要ifstream,而不是ofstream。当您从文件中读取时,您将其用作输入 - 因此i中的ifstream。然后,您想循环,使用std::getline从文件中获取一行并处理它:

std::ifstream file("phone.txt");
std::string phonenum;
while (std::getline(file, phonenum)) {
  // Process phonenum here
  std::cout << phonenum << std::endl; // Print the phone number out, for example
}

std::getline是while循环条件的原因是因为它检查了流的状态。如果std::getline无论如何都失败了(例如,在文件的末尾),循环将结束。

答案 2 :(得分:1)

你可以这样做:

 #include <fstream>
 using namespace std;

 ifstream input("phone.txt");

for( string line; getline( input, line ); )
{
  //code
}