将用户输入的字词与txt文件中的列表进行比较

时间:2018-05-06 19:40:41

标签: c++ search text getline

我希望用户输入他们的姓名,性别,年龄,药物和状况。然后查看文本以查看他们的条件是否与文本文档中的任何其他人匹配,然后查看他们的年龄,性别或药物是否相同。如果它出现了可能的副作用,也会出现在文本文档中。

因为我做了这样的事情已经很久了,所以难以入门。我只需要了解如何阅读和比较文本文档的基础知识。

Txt doc的布局如下:

Name Med Sex Age Cond Effect
Bill DepMed M 33 Depression StomachAche 
Tom ADDMed  M 24 ADD HeadAche

1 个答案:

答案 0 :(得分:0)

我不知道你需要什么“基本”,但是要读取和写入你需要包含头文件“fstream”的文件。您可以通过各种方式读写文件。一种方法是打开文件,而不是使用cin作为输入,而不是使用cout作为输出,您将使用打开文件的文件流的名称。示例:

#include <fstream>

int main() {
    string input;
    fstream dataFile; //names stream 'dataFile' sort of like a variable.

    dataFile.open("data.txt", ios::in | ios::out); //opens data.txt for reading (ios::in) and writing (ios::out)
    dataFile >> input; //stores data to input exactly like 'cin' would from the screen, but in this case the input is coming from 'dataFile'
    getline(dataFile, input, '\n'); //stores data to input exactly like 'cin.getline()' would
    dataFile << "String to be added in file" << endl; //prints to file exactly like 'cout' prints to screen
    dataFile.close() //closes file, be sure to do this or else you risk memory leak issues
}

特别针对您的问题:

  1. 向用户询问其中一列(您无需询问所有这些列。名称,条件或症状最有效)。
  2. 打开数据文件
  3. 使用getline(inFile, junk, '\n');跳过第一行(您不想搜索列标题)。 junk是字符串变量,inFile是您的'.txt'文件。
  4. 再次使用getline()阅读文件中的下一行。
  5. 对于每一行,使用searchString搜索从文件userInput读取的字符串,以查找用户输入的字符串found = searchString.find(userInput, 0)。你必须在循环之前声明size_t found
  6. 对于每一行,请使用userInput
  7. 检查searchString中是否找到if(found != std::string::npos)
  8. 如果发现使用'cout'
  9. 将`searchString打印到屏幕上
  10. 重复步骤4-7,直到文件结束
  11. 关闭文件