gpt4 book ai didi

c++ - 如何在 C++ 中的 ifstream 函数生成的文件中搜索特定单词

转载 作者:行者123 更新时间:2023-11-28 02:28:52 24 4
gpt4 key购买 nike

我制作了一个 c++ 程序,它执行以下操作:

1.读取表单文件所有以前记录的事件
2. 添加事件到日历
3. 从日历中删除事件
4. 按名称搜索事件以获取其描述
5.预览某一天的所有事件(用户输入日期)排序

现在我想制作 num 4,允许用户输入名称并在我之前添加事件的文件中搜索该名称。

这是我尝试过的方法,但它对我不起作用:

{
int search(void)
fstream checkStream;
string searchString;
string lineOfText;
calender o;

cout << "Please enter a valid name to search for: ";
cin.ignore();
getline(cin, searchString);
checkStream.open("calender.txt", ios::in);
for (;;)
{
getline(checkStream, lineOfText);
{ if (checkStream.eof())
cout << "ok";
}

if (lineOfText.find("searchString", 0) != string::npos)
{
return 1;
break;
}
}
cout << "Done searching..." << endl;
checkStream.close();
}

事件结构

Event Name : fcis Date : 22 / 2015 Time : 12 : 11 Place: university Event Discription : hi hi hi hi lol no yes ----------------------------------------------------- Event Name : fcis 2 Date : 22 / 2018 Time : 9 : 20 Place: warrak Event Discription : asdaksjbdaskjdncc ssskA ------------------------------------------------------- Event Name : support - then { new line and so on} Date : 5 / 2015 Time : 9 : 30 Place: abasya Event Discription : saldasjkldh –

最佳答案

您正在搜索 searchString 作为文字字符串“searchString”,而不是使用您在用户输入中读取的变量。

 if (lineOfText.find("searchString", 0) != string::npos)

应该改为

if (lineOfText.find(searchString, 0) != string::npos)

其他一些注意事项 -

这里return后不需要break,它永远不会执行

    if (lineOfText.find("searchString", 0) != string::npos)
{
return 1;
break;
}

此外,如果在您的输入文件中找不到 searchString,代码将永远不会停止执行,当没有更多数据可从文件中读取时,您需要跳出 for(;;;) 循环。

关于c++ - 如何在 C++ 中的 ifstream 函数生成的文件中搜索特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29605792/

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