-1

所以我试图在游戏开始时进行登录,并且我已经对名称和密码的注册进行了编程。但是有没有办法扫描文件以查找其中一个用户名?

:) 先感谢您。

4

4 回答 4

4

C++ 中有“在文件中查找单词”:

typedef std::istream_iterator<std::string> InIt;

if (std::find(InIt(std::ifstream("file.txt") >> std::skipws), InIt(), word) != InIt())
{
    std::cout << "the word '" << word << "' was found in 'file.txt'\n";
}

为此,word需要用空格分隔:std::istream_iterator<std::string>该类std::string从构造它的流中读取类型的对象,并提供对相应序列的迭代器访问。默认构造std::istream_iterator<std::string>()用于指示序列的结束。std::find()在上述情况下,它只是在序列中查找与其最后一个参数匹配的对象的标准算法之一word

代码有点奇怪的是std::ifstream对象的使用:由于结果只是一个布尔表达式,std::ifstream所以使用了一个临时的。由于构造函数tsd::istream_iterator<std::string>接受一个std::istream&作为构造函数参数并且临时不能绑定到非const引用,因此插入了一个操纵器( ):此操作除了返回对临时std::skipws的非引用之外没有任何作用。conststd::ifstream

于 2012-12-21T20:42:11.253 回答
3

不是“在文件中查找单词”功能,不。您必须打开、读取文件并扫描已读取文件的每个部分(例如行、块)中的单词,然后关闭文件。

于 2012-12-21T20:37:48.973 回答
0

以文本模式打开文件并逐行读取。对于每一行,扫描它以查找您要查找的单词。

就是这样。我知道没有一个函数可以调用来执行此操作。

于 2012-12-21T20:39:54.383 回答
0
$ cat names.txt 
user1
user2
user3



$ cat c.cc

#include <iostream>
#include <fstream>
#include <string>
#include <cstring>

using namespace std;

int main ()
{
    string STRING;
    const char *USERNAME = "user1";
    ifstream infile;
    infile.open ("names.txt");
    while(!infile.eof())
    {
        getline(infile,STRING); 
        if (strcmp(USERNAME,  STRING.c_str()) == 0) 
                cout<<STRING;
    }
    infile.close();
    return 0;
}


$ ./c
user1

如果你想让这些行成为,请使用 strncmp

username1 password1
username2 password2
于 2012-12-21T20:52:33.207 回答