下面的代码来自我正在研究的更大的代码。它在txt文件中搜索用户名。如果找到名称,则返回ether一个int 0或int 1.它编译并运行但是无论用户是否在txt文件中,它总是运行关闭动作让我认为函数每次都返回0 。
#include <iostream>
#include <fstream>
#include <string>
int DoThis(int UF);
int main(void)
{
int z;
z = DoThis(0);
if(z == 1){RunThing;}
else if(z == 0){ShutDown;}
return 0;
}
int DoThis(int UF)
{
int offset;
std::cin >> NameToCheck;
Myfile.open("FilePath")
if(Myfile.is_open())
{
while(!Myfile.eof())
{
getline(Myfile,line);
if((offset = line.find(NameToCheck, 0)) != std::string::npos)
{
while(Myfile >> FirstName >> LastName)
{
return = 1;
}
}
}
Myfile.close();
}
else
{
std::cout << "File not found.";
}
return 0;
}
答案 0 :(得分:0)
在没有看到实际代码的情况下无法准确说明,但看起来它总是返回0,因为您要覆盖每个变量UserFound
中的内容线。找到名称后,返回1 - 这样您就不必浏览文件的其余部分,并可能导致其他错误。
如果您找不到该文件或文件无法打开,请将该函数的最后一条语句设为return 0;
。
要逐行阅读文件,您不需要第二个while
循环。您只需要检查line
字符串是否包含NameToCheck
字符串。如果找到,则返回1.如果到达文件末尾,则返回0.