我有一个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 ++的新手。感谢。
答案 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
}