如何逐行阅读
How to read line by line
我只是 C++ 的初学者所以请不要苛刻地评判我。
可能这是个愚蠢的问题,但我想知道。
我有一个这样的文本文件(总是有 4 个数字,但行数会有所不同):
5 7 11 13
11 11 23 18
12 13 36 27
14 15 35 38
22 14 40 25
23 11 56 50
22 20 22 30
16 18 33 30
18 19 22 30
这就是我想要做的:
我想逐行读取这个文件并将每个数字放入变量中。然后我将使用这 4 个数字执行一些功能,然后我想阅读下一行并再次使用这 4 个数字执行一些功能。我怎样才能做到这一点?
就我而言
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int array_size = 200;
char * array = new char[array_size];
int position = 0;
ifstream fin("test.txt");
if (fin.is_open())
{
while (!fin.eof() && position < array_size)
{
fin.get(array[position]);
position++;
}
array[position - 1] = '[=11=]';
for (int i = 0; array[i] != '[=11=]'; i++)
{
cout << array[i];
}
}
else
{
cout << "File could not be opened." << endl;
}
return 0;
}
但像这样我正在将整个文件读入数组,但我想逐行读取它,执行我的功能然后读取下一行。
对于从文件中读取数据,我发现 stringstream 非常有用。
这样的事情怎么样?
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
int main()
{
ifstream fin("data.txt");
string line;
if ( fin.is_open()) {
while ( getline (fin,line) ) {
stringstream S;
S<<line; //store the line just read into the string stream
vector<int> thisLine(4,0); //to save the numbers
for ( int c(0); c<4; c++ ) {
//use the string stream as a new input to put the data into a vector of int
S>>thisLine[c];
}
// do something with these numbers
for ( int c(0); c<4; c++ ) {
cout<<thisLine[c]<<endl;
}
}
}
else
{
cout << "File could not be opened." << endl;
}
return 0;
}
我只是 C++ 的初学者所以请不要苛刻地评判我。 可能这是个愚蠢的问题,但我想知道。
我有一个这样的文本文件(总是有 4 个数字,但行数会有所不同):
5 7 11 13
11 11 23 18
12 13 36 27
14 15 35 38
22 14 40 25
23 11 56 50
22 20 22 30
16 18 33 30
18 19 22 30
这就是我想要做的: 我想逐行读取这个文件并将每个数字放入变量中。然后我将使用这 4 个数字执行一些功能,然后我想阅读下一行并再次使用这 4 个数字执行一些功能。我怎样才能做到这一点? 就我而言
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int array_size = 200;
char * array = new char[array_size];
int position = 0;
ifstream fin("test.txt");
if (fin.is_open())
{
while (!fin.eof() && position < array_size)
{
fin.get(array[position]);
position++;
}
array[position - 1] = '[=11=]';
for (int i = 0; array[i] != '[=11=]'; i++)
{
cout << array[i];
}
}
else
{
cout << "File could not be opened." << endl;
}
return 0;
}
但像这样我正在将整个文件读入数组,但我想逐行读取它,执行我的功能然后读取下一行。
对于从文件中读取数据,我发现 stringstream 非常有用。
这样的事情怎么样?
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
int main()
{
ifstream fin("data.txt");
string line;
if ( fin.is_open()) {
while ( getline (fin,line) ) {
stringstream S;
S<<line; //store the line just read into the string stream
vector<int> thisLine(4,0); //to save the numbers
for ( int c(0); c<4; c++ ) {
//use the string stream as a new input to put the data into a vector of int
S>>thisLine[c];
}
// do something with these numbers
for ( int c(0); c<4; c++ ) {
cout<<thisLine[c]<<endl;
}
}
}
else
{
cout << "File could not be opened." << endl;
}
return 0;
}