Code Bye

C++怎么读取文件中的一行数据

具体问题是这样的:
一个文本文件,内容如下:
10 39 100 4
12 1000 48
31 93 466
现在想要一行一行读取,并且将一行的数据存放到一个数组或容器中。也就是结果是
a[4]={10,39,100,4}
b[3]={12,1000,48}
c[3]={31,93,466}
当然可以存放到vector<int>中。
问一下上述功能怎么样实现呢?
解决方案

4

getline 函数可以读取一行,读到之后可以用空格分隔得到每一个,然后用atoi将字符串转换成整数getline 函数可以读取一行,读到之后可以用空格分隔得到每一个,然后用atoi将字符串转换成整数

30

#include <iostream>
#include <fstream>
#include<vector>
using namespace std;
int main()
{
ifstream input_file(“F:\test.txt”);
char buffer[64] = {0};
vector<vector<int>> vec_data;
char *p;
while(input_file.getline(buffer,64))
{
vector<int> one_row;
p = strtok(buffer, ” “);
while(p)
{
int num = atoi(p);                // p就是分割出来的数字的字符串形式,转成整型后就是num
p = strtok(NULL, ” “);
one_row.push_back(num);
}
vec_data.push_back(one_row);
}
//打印vector
for(int i = 0; i < vec_data.size(); i++)
{
for(int j = 0; j < vec_data[i].size(); j++)
cout << vec_data[i][j] << ” “;
cout << endl;
}
}

40

用ifstream 配合getline一行行读取数据,然后用vector嵌套vector来存储数据
对于每行的数据都使用strtok来提取出数字
#include <iostream>
#include <fstream>
#include<vector>
using namespace std;
int main()
{
	ifstream input_file("F:\test.txt");
	char buffer[64] = {0};
	vector<vector<int>> vec_data;
	char *p;
	while(input_file.getline(buffer,64))
     {    
		 vector<int> one_row;
		 p = strtok(buffer, " ");
         while(p)
         {
            int num = atoi(p);                // p就是分割出来的数字的字符串形式,转成整型后就是num
            p = strtok(NULL, " ");
			one_row.push_back(num);
         }
		 vec_data.push_back(one_row);
    }
	//打印vector
	for(int i = 0; i < vec_data.size(); i++)
	{
		for(int j = 0; j < vec_data[i].size(); j++)
			cout << vec_data[i][j] << " ";
		cout << endl;
	}
}

3

引用:

getline,gets都可以,格式化读入的话用fscanf(“%d %d %d”, …)

int fscanf(FILE*stream, constchar*format, [argument…])


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C++怎么读取文件中的一行数据