txt文件如下
8.5 8.9
3.4 5.8
.......
9.5 5.6
每一行两个数据,用空格分开,我现在需要把每一行中的两个数据存到两个变量中,并且逐行读取。这个要如何实现呢?
14 个解决方案
#1
关注 mark
#2
什么意思呢?不明白
#3
IO 读写相关的东西,
IOSTREAM
谭浩强的 C++面向对象程序设计 中 详细介绍了 各种访问方法。
IOSTREAM
谭浩强的 C++面向对象程序设计 中 详细介绍了 各种访问方法。
#4
fstream
getline(str, size, '\n');这样读取了一行
你再根据你文件内容去判断是字符串还是数字还是什么
中间用什么隔开之类的
getline(str, size, '\n');这样读取了一行
你再根据你文件内容去判断是字符串还是数字还是什么
中间用什么隔开之类的
#5
#include <stdio.h>
void getData(float data[100][2])
{
FILE *fp;
int i = 0, j = 0;
fp = fopen("db.txt", "r");
if(fp == NULL)
{
printf("cannot open file!\n");
return;
}
while(!feof(fp))
{
if(j != 1)
fscanf(fp, "%f ", &data[i][j++]);//注意此处有个空格
else
{
fscanf(fp, "%f", &data[i][j]);
j = 0;
++i;
}
}
fclose(fp);
}
int main()
{
float data[100][2];
int i, j;
getData(data);
for(i = 0; i < 100; ++i)
{
for(j = 0; j <2; ++j)
{
printf("%f ", data[i][j]);
}
printf("\n");
}
return 0;
}
//仅供参考 楼主
#6
学习,学习!
#8
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string buffer;
double str1;
string str2;
stringstream ss;
ifstream inputFile("d:\\data.txt");
while(getline(inputFile,buffer))
{
ss.clear();
ss.str(buffer);
ss>>str1>>str2;
cout<<str1<<" "<<str2<<endl;
}
}
#9
若是BCB,可以用StringList逐行读取txt文件,再截取数据就可以了
#10
如果知道是浮点数,用空格或者tab分割。直接用ifstream读入就可以了。非常简单
#11
非常感谢各位的回帖
如果我有10个文件,要连续读入
文件名是left1.txt
left2.txt
left3.txt
.....
left10.txt
要求还是文件中的一行有两个数据,存储到两个数组中。这样要怎么实现?
如果我有10个文件,要连续读入
文件名是left1.txt
left2.txt
left3.txt
.....
left10.txt
要求还是文件中的一行有两个数据,存储到两个数组中。这样要怎么实现?
#12
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
template<typename T>
string ToString(T var)
{
stringstream ss;
ss<< var;
return ss.str();
}
int main()
{
string buffer;
double str1;
string str2;
stringstream ss;
for (int i=0;i<10;i++)
{
string fileName="left"+ToString(i)+".txt";
ifstream inputFile(fileName.c_str());
while(getline(inputFile,buffer))
{
ss.clear();
ss.str(buffer);
ss>>str1>>str2;
cout<<str1<<" "<<str2<<endl;
}
}
}
#13
fgets搞定
#14
To:
namelij
//楼上的问一下fgets怎样能够读取非第一行的数据,谢谢……
#1
关注 mark
#2
什么意思呢?不明白
#3
IO 读写相关的东西,
IOSTREAM
谭浩强的 C++面向对象程序设计 中 详细介绍了 各种访问方法。
IOSTREAM
谭浩强的 C++面向对象程序设计 中 详细介绍了 各种访问方法。
#4
fstream
getline(str, size, '\n');这样读取了一行
你再根据你文件内容去判断是字符串还是数字还是什么
中间用什么隔开之类的
getline(str, size, '\n');这样读取了一行
你再根据你文件内容去判断是字符串还是数字还是什么
中间用什么隔开之类的
#5
#include <stdio.h>
void getData(float data[100][2])
{
FILE *fp;
int i = 0, j = 0;
fp = fopen("db.txt", "r");
if(fp == NULL)
{
printf("cannot open file!\n");
return;
}
while(!feof(fp))
{
if(j != 1)
fscanf(fp, "%f ", &data[i][j++]);//注意此处有个空格
else
{
fscanf(fp, "%f", &data[i][j]);
j = 0;
++i;
}
}
fclose(fp);
}
int main()
{
float data[100][2];
int i, j;
getData(data);
for(i = 0; i < 100; ++i)
{
for(j = 0; j <2; ++j)
{
printf("%f ", data[i][j]);
}
printf("\n");
}
return 0;
}
//仅供参考 楼主
#6
学习,学习!
#7
#8
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string buffer;
double str1;
string str2;
stringstream ss;
ifstream inputFile("d:\\data.txt");
while(getline(inputFile,buffer))
{
ss.clear();
ss.str(buffer);
ss>>str1>>str2;
cout<<str1<<" "<<str2<<endl;
}
}
#9
若是BCB,可以用StringList逐行读取txt文件,再截取数据就可以了
#10
如果知道是浮点数,用空格或者tab分割。直接用ifstream读入就可以了。非常简单
#11
非常感谢各位的回帖
如果我有10个文件,要连续读入
文件名是left1.txt
left2.txt
left3.txt
.....
left10.txt
要求还是文件中的一行有两个数据,存储到两个数组中。这样要怎么实现?
如果我有10个文件,要连续读入
文件名是left1.txt
left2.txt
left3.txt
.....
left10.txt
要求还是文件中的一行有两个数据,存储到两个数组中。这样要怎么实现?
#12
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
template<typename T>
string ToString(T var)
{
stringstream ss;
ss<< var;
return ss.str();
}
int main()
{
string buffer;
double str1;
string str2;
stringstream ss;
for (int i=0;i<10;i++)
{
string fileName="left"+ToString(i)+".txt";
ifstream inputFile(fileName.c_str());
while(getline(inputFile,buffer))
{
ss.clear();
ss.str(buffer);
ss>>str1>>str2;
cout<<str1<<" "<<str2<<endl;
}
}
}
#13
fgets搞定
#14
To:
namelij
//楼上的问一下fgets怎样能够读取非第一行的数据,谢谢……