c++ - 如何知道来自文本文件的输入是否是 C++ 中的有效数字

标签 c++ file

我是 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/

相关文章:

c++ - 如何配置 apache2 和 fastCGI 来运行我的 C++ 应用程序

c++ - 内置类型有默认构造函数吗?

c++ - 如何获取集合中前 100 个名字

c++ - OOP,构造函数不工作

java - 如何从android中的.txt文件中获取字符串

java - 重定向 System.out 并附加到现有文件

javascript - 将视频从客户端发送到服务器

C# 4.0 : System. 诊断过程

c++ - 返回 boost::smatch 并获取子串 "\000"

java 使用 file[] 获取多个目录的文件夹大小