我有一个非常简单的代码,但我无法找出错误。 任务:我想读取包含float / double值的文本文件。文本文件如下所示:
- datalog.txt -
3.000315
3.000944
3.001572
3.002199
3.002829
3.003457
3.004085
3.004714
3.005342
3.005970
3.006599
3.007227
3.007855
3.008483
3.009112
3.009740
3.010368
3.010997
代码看起来像这样
- dummy_c ++ CPP -
#include <iostream>
#include <fstream>
#include <stdlib.h> //for exit()function
using namespace std;
int main()
{
ifstream infile;
double val;
infile.open("datalog");
for (int i=0; i<=20; i++)
{
if(infile >> val){
cout << val << endl;
} else {
cout << "end of file" << endl;
}
}
return 0;
}
输出如下:
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
end of file
我希望它的打印方式与datalog.txt文件相同。
你可以帮我找出错误吗?感谢, Milind。
答案 0 :(得分:3)
如果你的文件真的被称为datalog.txt
,你应该确保尝试打开它:
infile.open("datalog.txt");
// ^^^^^^
如果您没有完全路径,exe将在当前目录中查找它。
答案 1 :(得分:2)
您指定了要打开的错误文件;使用方法:
infile.open("datalog.txt");
您可以通过简单的测试来防止尝试使用未打开的文件:
infile.open("datalog.txt");
if (infile) {
// Use the file
}
答案 2 :(得分:1)
难道你只是错误地拼错了文件名吗?您说该文件名为“datalog.txt”,但在代码中打开“datalog”。
答案 3 :(得分:0)
使用正确的文件名:-)然后它对我有用。 'datalog'文件只有18行,而不是20行,BTW。
答案 4 :(得分:0)
正如您所说,文件名是"datalog.txt"
。在您使用"datalog"
的代码中。
使用后也要经常检查流,以确保文件已正确打开:
int main()
{
std::ifstream infile;
double val;
infile.open("dalatog.txt");
if( infile )
{
for(unsigned int i = 0 ; i < 20 ; ++i)
{
if(infile >> val)
std::cout << val << std::endl;
else
std::cout << "end of file" << std::endl;
}
}
else
std::cout << "The file was not correctly oppened" << std::endl;
}
此外,最好使用while循环而不是检查EOF的for循环:
while( infile >> val )
{
std::cout << val << std::endl;
}
答案 5 :(得分:-1)
也许使用std :: getline()函数会更好