我是 C++ 的新手,所以尽管这似乎是一个简单的问题,但我仍然想不出如何解决它。 所以我有一个文本文件,其中包含一堆数字。有些不是有效的数字,可能是 3.12ad、t3 等。当我使用以下代码时,它无法区分它是读取了错误的数字,还是只是完成了文件的读取(这两种情况都会给我一条错误消息).所以我的问题是,我怎样才能捕捉到糟糕的数字情况?谢谢。
int main() {
string line;
int numOfLine = 0;
int inputNum = 0;
float num;
vector<float> arr1;
vector<float> arr2;
ifstream infile11("test.txt");
while (true) {
if (infile11 >> num) {
arr1.push_back(num);
inputNum ++;
cout<<num<<endl;
}
if ((infile11 >> num).fail()) {
cout<<"Error"<<endl;
return 0;
}
}
}
最佳答案
你可以使用正则表达式来检查你得到的字符串是否是一个数字。如果我没记错的话,在 C++ 中它位于 #include < regex > 中。这样您就可以使用 regex_match() 函数。您的正则表达式可能是这样的:“?\d*(.\d+)?”。
关于c++ - 如何知道来自文本文件的输入是否是 C++ 中的有效数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51995147/