【发布时间】:2014-09-09 01:04:08
【问题描述】:
我正在尝试读取一个应该只包含数字的文件。如果它符合该标准,我可以成功读取整个文件,但如果它碰巧有一个字母,我需要返回 false 并带有错误语句。
问题是我发现我的程序在找到这个字符时很难出错。它可以发现它没有问题,但是当它发现时,它决定跳过它。
我要读取文件并尝试仅读取数字的代码:
bool compute::Read (ifstream& stream)
{
double value;
string line;
int lineNumber = 1;
if (stream)
{
while (getline(stream, line))
{
lineNumber++;
istringstream strStream(line);
while (strStream >> value)
{
cout << value << endl;
}
}
}
return true;
}
我使用的输入文件是
70.5 61.2 A8 10.2
2
请注意,我的输入文件中有一个非数字字符。此时它应该会失败并返回 false。
目前,它所做的只是一旦点击“A”,它就会简单地返回下一行,继续 getline while 循环。
对此的任何帮助将不胜感激。
【问题讨论】:
-
让我们说清楚。该文件不包含
doubles,,或者如果包含,您应该以二进制形式读取它。它包含文本格式的实数,您需要将其转换为double. -
您的代码不包含任何停止和返回 false 的指令...
-
@EJP 它确实包含双精度,它们表示为文本。