Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将新字符串名与txt文件中的现有字符串名进行比较?_C++_Database_Fstream_Voting - Fatal编程技术网

C++ 如何将新字符串名与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

我想在一个投票程序中实现一个简单的功能,搜索一个名字,如果这个名字已经存在,那么它将显示一条消息,一个人不能投票。但是我对txt文件很困惑。下面的代码不能正常工作,我想了解我需要做什么。 还有,如何找到全名?我认为这只是在寻找第一个词

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 < /代码>,请考虑函数会做什么。是否会读取匹配字符串?