5

我有一个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++ 真的很陌生。谢谢。

4

3 回答 3

6

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

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>

int main(int argc, char *argv[])
{
    // open the file if present, in read mode.
    std::ifstream fs("phone.txt");
    if (fs.is_open())
    {
        // variable used to extract strings one by one.
        std::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.
            std::cout << phonenum << '\n';
        }

        // close the file.
        fs.close();
    }

    return EXIT_SUCCESS;
}
于 2012-11-23T17:18:44.190 回答
3

简单的。首先,请注意您需要的是ifstream,而不是ofstream。当您从文件中读取时,您将其用作输入 - 因此iin 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无论如何都失败(例如在文件末尾),则循环将结束。

于 2012-11-23T17:19:17.467 回答
1

你可以这样做:

 #include <fstream>
 using namespace std;

 ifstream input("phone.txt");

for( string line; getline( input, line ); )
{
  //code
}
于 2012-11-23T17:07:15.380 回答