在C++中检查输入文件中的一行是否只有一个int

Checking that a line in an input file has only one int in C++

本文关键字:一行 是否 有一个 int 检查 C++ 输入 文件      更新时间:2023-10-16

我正在尝试读取以下格式的输入文件:

1  
4  
56  
12  

每个整数都在一行中。

目的是确定每条线是一个int,并且它只包含一个int。这是我的代码片段:

std::fstream file(filename, std::ios_base::in);
int num=0;
char c;
file.open(filename);
    while(std::getline(file, line)){
        std::istringstream s(line);
        if(!(s >> num)){
            //error not a number
            file.close();
            std::exit(EXIT_FAILURE);
        }else if(s >> c){
            //error there was more than one object in a line
            file.close();
            std::exit(EXIT_FAILURE);

我得到的错误是:

a5.cpp:28:22: error: implicit instantiation of undefined template 'std::__1::basic_istringstream<char,
      std::__1::char_traits<char>, std::__1::allocator<char> >'
                std::istringstream s(line);
                                   ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iosfwd:120:33: note: 
      template is declared here
    class _LIBCPP_TYPE_VIS_ONLY basic_istringstream;

您忘记包含sstream:

#include <sstream>