我正在尝试在带有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'
答案 0 :(得分:0)
可能是因为您的while
条件错误而导致错误。您必须阅读文件,直到文件结束。但是,第一次尝试时,您会得到false
。另外,这是我从文件读取数据之前的建议。
is_good()
。const
。对于您的情况,bool check_for_valid_name(const std::ifstream &file, const char* name)
sizeof(name)
将被计算为指针,因此根据您的体系结构,它可以是4或8字节。如果不是您期望的长度,请使用strlen()
代替。