C++ 如何将新字符串名与txt文件中的现有字符串名进行比较?
我想在一个投票程序中实现一个简单的功能,搜索一个名字,如果这个名字已经存在,那么它将显示一条消息,一个人不能投票。但是我对txt文件很困惑。下面的代码不能正常工作,我想了解我需要做什么。 还有,如何找到全名?我认为这只是在寻找第一个词C++ 如何将新字符串名与txt文件中的现有字符串名进行比较?,c++,database,fstream,voting,C++,Database,Fstream,Voting,我想在一个投票程序中实现一个简单的功能,搜索一个名字,如果这个名字已经存在,那么它将显示一条消息,一个人不能投票。但是我对txt文件很困惑。下面的代码不能正常工作,我想了解我需要做什么。 还有,如何找到全名?我认为这只是在寻找第一个词 boolsearchname(字符串main); int main() { 流newvoter(“voter.txt”,ios::app); 字符串名; 如果文件中的名字与mainvoter不匹配,则返回false。代码中的注释和建议的更改: bool sear
boolsearchname(字符串main);
int main()
{
流newvoter(“voter.txt”,ios::app);
字符串名;
如果文件中的名字与mainvoter
不匹配,则返回false
。代码中的注释和建议的更改:
bool searchname(const std::string& mainvoter) // const& instead of copying the string.
{ // It's not strictly needed, but is often
// more effective.
std::ifstream voter("voter.txt");
if(voter) { // check that the file is in a good (and open) state
std::string name;
while(std::getline(voter, name)) { // see notes
if(mainvoter == name) { // only return if you find a match
return true; // use true instead of 1
}
}
}
// return false here, when the whole file has been parsed (or you failed to open it)
return false; // and use false instead of 0
}
其他说明:
- 在检查文件中是否存在投票者名称之前,请先将投票者名称放入文件中。您需要首先检查该名称是否存在,并且只有当该名称在文件中不存在时,才应将其添加到文件中
- 您使用
getline
读取投票者的名称。getline
允许使用空白字符,而您用于从文件读取的格式化输入voter>
则不允许(默认情况下)。因此,如果您输入“Nastya Osipchuk”,您将无法找到匹配项,因为投票者>>名称
将在第一次迭代中读取“Nastya”,在下一次迭代中读取“Osipchuk”
- 如果将
searchname
函数移到main
上方,则可以避免转发声明
- 另见:
您的<代码>返回0 需要在<代码>结尾的SeXCHNAME//COD>函数。不在while while循环中。如果文件中的第一个字符串不等于<代码> MAJUnter < /代码>,请考虑函数会做什么。是否会读取匹配字符串?