Я новичок в C++ и пытаюсь задушить основы. Я пытаюсь прочитать ввод файла и распечатать все в файле и, самое главное, сопоставить идентификатор элемента с введенным значением и удалить строку в моем файле, которая совпадает с идентификатором.
Если ваш формат файла исправлен (int
: string
: int
)
вы можете найти/сопоставить "id" следующим образом:
cout << "Input the id that you wish to find" << endl;
cin >> input;
char ch; // for colon (:)
while(readFile >> id >> ch >> itemName >> ch >> quantity )
{
if (input == id) {
//cout << "valid Input";
}
}
readFile .close();
У вас две проблемы с кодом.
Во-первых, оператор ввода >>
отделяется от пробелов, а не от произвольных символов, поэтому ваш разбор входного файла неверен.
Вы можете использовать, например, std::getline
чтобы получить отдельные поля в виде строк, а затем преобразовать их в правильные типы (либо в std::istringstream
либо используя, например, std::stoi
).
Вторая проблема заключается в том, что вы читаете во всех данных, но сохраняете только последнюю прочитанную строку. Вам нужно сохранить данные в структуре, помещенной в вектор, а затем выполнить поиск по этому вектору.