严重性代码说明项目文件行抑制状态错误C2676二进制'>>':'std :: ifstream'

时间:2019-05-11 21:48:15

标签: c++ ifstream

我正在尝试在带有2个参数std :: ifstream和char * ..的头文件中定义函数。该函数将检查char *类型的参数是否在文件中,然后返回true,否则将返回false。编译器向我显示了有关带有ifstream引用的“ >>”操作的错误消息

P.S注意,我在外部定义自己的头文件中的功能

首先我已经传递了fstream的参数,然后更改为ifstream但有相同的错误消息

bool check_for_valid_name(std::ifstream &file, char* name) {
    char data[sizeof(name)];
    while (file.eof()) {
        file >> data;
        if (strcmp(data, name)) {
            return true;
        }
    }
    return false;
}

它应该可以正常工作,只是返回false或true,但是编译器会显示错误:严重性代码说明项目文件行抑制状态错误C2676二进制'>>':'std :: ifstream'

1 个答案:

答案 0 :(得分:0)

可能是因为您的while条件错误而导致错误。您必须阅读文件,直到文件结束。但是,第一次尝试时,您会得到false。另外,这是我从文件读取数据之前的建议。

  • 请确保该文件已经存在或不存在。将使用is_good()
  • 如果函数中的函数参数不会更改,请使用const。对于您的情况,bool check_for_valid_name(const std::ifstream &file, const char* name)
  • sizeof(name)将被计算为指针,因此根据您的体系结构,它可以是4或8字节。如果不是您期望的长度,请使用strlen()代替。
  • 如果对实现没有任何限制,请使用std :: string而不是char数组。它将帮助您摆脱所有C样式的函数。