C++中读取txt中的double型数据,保存到程序中的数组中
如下图为txt中的数据文件,复制到excel中进行显示,方便观察顺序,然后读取到程序的结果如下图:
代码如下:
#include<iostream>
#include<fstream>
#include<string>
#include <typeinfo>
const int NUM = 13000;
using namespace std;
double pointNum[NUM];
//c++的cin 不能输入包含嵌入空格的字符串。
//C++的getline 函数。此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。
void readEveryLine(string filename)
{
ifstream infile(filename,ios::in);//读入文件对象
string line;
string str[NUM];
double num[NUM];
if (infile)
{
cout << "open file fail" << endl;
}
int i_1 = 0, i_2 = 0;
while (getline(infile,line))//getline用于从输入流,读取每一行,getline可以读空格
{
//读取进来的每一行line保存为string类型
str[i_1] = line;
i_1++;
}
for (; i_2 < i_1; i_2++)
{
//num[i_2] = atof(str[i_2].c_str);
num[i_2] = stod(str[i_2]);//stod将string转换为double型数据
}
infile.close();
cout << "关闭文件成功" << endl;
for (int i = 3065; i < 3068; i++)
{
//cout << num[i] << "类型:" << typeid(num[i]).name() << endl;
printf("%3.6f\n", num[i]);
}
}
//主函数
int main()
{
string filename = "C:/Users/...11.txt";
readEveryLine(filename);
system("pause");
return 0;
}
附:
cin从输入流中读不到空格间隔的内容,用getline替换,式例如下:
void readLine(string filename)
{
string name;
string city;
cout << "输入名字:";
while (getline(cin, name))
{
cout << "我的名字:" << name << endl;
}
}
int main()
{
readLine(filename);
system("pause");
return 0;
}
运行结果如下: