gpt4 book ai didi

C++从文件中读取并标记数据

转载 作者:行者123 更新时间:2023-11-30 03:03:41 25 4
gpt4 key购买 nike

我正在尝试创建一个 C++ 程序,允许我从文件中读取并从每一行中找到匹配的输入。请注意,每一行都是一条由逗号分隔的记录。如果找到匹配项,预期输出将是来自记录的字符串。

For example: Data from file =>

andrew,andy,Andrew Anderson
jade,jaded,Jade Sonia Blade

Input => jade

Output => jaded

我该怎么做?我正在尝试实现 strtok,但无济于事。到目前为止,我没有得到好的结果。有人可以帮我解决这个问题吗?

编辑

关于这个问题,我想我已经有所进展...但是当我运行它时输出屏幕仍然崩溃。这是我的代码

    #include <iostream>
#include <fstream>
#include <string>
using namespace std;

main () {
// string toks[];
char oneline[80],*del;
string line, creds[4];
int x = 0;
ifstream myfile;
myfile.open("jake.txt");
if (myfile.is_open())
{

while (!myfile.eof())
{
getline(myfile,line);
strcpy(oneline,line.c_str());
del = strtok(oneline,",");
while(del!=NULL)
{
creds[x] = del;
del = strtok(NULL,",");
x++;
}
}
myfile.close();
}
else
cout << "Unable to open file";

system("pause");
}

有人可以帮我解释一下吗?

编辑....

我在这方面取得了一些进展......现在的问题是当输入与下一行匹配时,它崩溃了......

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

main () {
// string toks[];
char oneline[80],*del;
string line, creds[3], username, password;
int x = 0;
cout<<"Enter Username: ";
cin>>username;
cout<<"Enter Password: ";
cin>>password;
ifstream myfile;
myfile.open("jake.txt");
if (myfile.is_open())
{

while (!myfile.eof())
{
getline(myfile,line);
strcpy(oneline,line.c_str());
del = strtok(oneline,",");
while(del!=NULL)
{
creds[x] = del;
del = strtok(NULL,",");
++x;
}
if((creds[0]==username)&&(creds[1]==password))
{
cout<<creds[2]<<endl;
break;
}
}
myfile.close();
}
else
cout << "Unable to open file";

system("pause");
}

有人可以帮我解决这个问题吗?

最佳答案

您可以使用 boost tokenizer为此:

#include <boost/tokenizer.hpp>
typedef boost::char_separator<char> separator_type;

boost::tokenizer<separator_type> tokenizer(my_text, separator_type(","));

auto it = tokenizer.begin();
while(it != tokenizer.end())
{
std::cout << "token: " << *it++ << std::endl;
}

另见 getline从文件中一次解析一行。

关于C++从文件中读取并标记数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com