有没有办法在c ++中扫描txt文件中的单词或名称?

时间:2012-12-21 20:36:23

标签: c++ text-files

所以我试图在游戏开始时登录,并编写了名称和密码的注册程序。但有没有办法扫描文件中的其中一个用户名?

:) 提前谢谢。

4 个答案:

答案 0 :(得分: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):此操作具有除了将非const引用返回到临时std::ifstream之外没有其他效果。

答案 1 :(得分:3)

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

答案 2 :(得分:0)

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

就是这样。我知道没有任何一个功能你可以打电话来做这件事。

答案 3 :(得分: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