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

Severity Code Description Project File Line Suppression State Error C2676 binary '>>': 'std::ifstream'

本文关键字:gt 二进制 ifstream std C2676 错误 项目文件 说明 代码 状态 严重性      更新时间:2023-10-16

我正在尝试在header文件中定义函数,该函数需要2个参数,std :: ifstream and char* ..函数将检查char* type type type type参数是否在文件中,然后返回true true否则它将返回false。编译器向我展示了有关">>"操作的错误消息,该操作带有ifstream Reference

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或trim

可能,您会遇到错误,因为您的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风格的功能。