Я читаю текстовый файл в c++, это пример некоторых строк в нем:
remove 1 2 cost 13.4
Как я мог игнорировать все вещи, кроме двух целых чисел после удаления, "1" и "2" и поместить их в две целые переменные?
мой неполный код:
ifstream file("input.txt");
string line;
int a, b;
if(file.is_open())
{
while (!file.eof())
{
getline (file, line);
istringstream iss(line);
if (line.find("remove") != string::npos)
{
iss >> a >> b; // this obviously does not work, not sure how to
// write the code here
}
}
}
Вот несколько вариантов:
Используйте stringstream
созданный для строки, чтобы найти токен remove
и проанализировать следующие два целых числа. Другими словами, замените это:
if (line.find("remove") != string::npos)
{
iss >> a >> b; // this obviously does not work, not sure how to
// write the code here
}
с этим:
string token;
iss >> token;
if (token == "remove")
{
iss >> a >> b;
}
Создайте stringstream
для остальной части строки (6
- длина маркера "удалить").
string::size_type pos = line.find("remove");
if (pos != string::npos)
{
istringstream iss(line.substr(pos + 6));
iss >> a >> b;
}
Вызовите метод seekg
в строке stringstream
чтобы установить индикатор позиции ввода потока после маркера "удалить".
string::size_type pos = line.find("remove");
if (pos != string::npos)
{
iss.seekg(pos + 6);
iss >> a >> b;
}
!file.eof()
и!file.eof()
странный шум.