Сравнение введенных пользователем терминов со списками в текстовом файле - PullRequest
0 голосов
/ 06 мая 2018

Я хочу, чтобы пользователь вводил свое имя, пол, возраст, лекарства и состояние. Затем просмотрите текст, чтобы увидеть, соответствует ли его состояние другим людям в текстовом документе, а затем посмотрите, совпадают ли их возраст, пол или прием лекарств. Если это не так, укажите возможный побочный эффект, который также есть в текстовом документе.

Возникли проблемы с началом работы, так как это было так давно, когда я делал что-то подобное Мне просто нужно знать основы того, как читать и сравнивать текстовый документ.

Txt документ выложен так:

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

1 Ответ

0 голосов
/ 07 мая 2018

Я не знаю, насколько "базовый" вам нужен, но для чтения и записи файлов вам нужно включить заголовочный файл "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 в searchString, используя if(found != std::string::npos)
  7. Если найдено, выведите `searchString на экран, используя 'cout'
  8. Повторяйте шаги 4-7, пока не будет достигнут конец файла
  9. Закрыть файл
...