Я довольно новичок в C++. У меня есть текстовый документ, который выглядит следующим образом:Сохраните следующее слово, если данное слово найдено (C++)
InputFile.txt
...
.
..
.
.
....
TIME/DISTANCE = 500/ 0.1500E+05
..
..
.
...
TIME/DISTANCE = 500/ 1.5400E+02
.
...
...
.
TIME/DISTANCE = 500/ 320.0565
..
..
.
.
...
Одна линия, показанная не устает повторять на протяжении всего файла. Моя цель - сохранить все числа после 500/
в массив/вектор/другой файл/что угодно. Я знаю, как читать файл и получить строку:
string line;
vector <string> v1;
ifstream txtfile ("InputFile.txt");
if (txtfile.is_open())
{
while (txtfile.good())
{
while(getline(txtfile, line))
{
// ?????
// if(line.find("500/") != string::npos)
// ?????
}
}
txtfile.close();
}
У кого-нибудь есть решение? Или указать мне в правильном направлении?
Заранее спасибо.
Редактировать: Оба предлагаемых решения (Джерри и Галик) работают отлично. Мне нравится это сообщество. :)
Цикл 'while (txtfile.good()) является избыточным, как и' if (txtfile.is_open()) ', если вы не используете его, чтобы сообщить, что файл не открывается или что-то в этом роде. – Galik
@Galik - Да, часть кода после этого выводит сообщение об ошибке, если файл не найден или что-то еще. – user3845866
См. Методы basic_string на странице cppreference.com. Используйте find, чтобы найти начало 500 /. Если не npos, добавьте 4 и получите s = substr (found + 4). Теперь вы можете использовать istringstream (s) >> doubleval, чтобы преобразовать его в double, если необходимо. вектор x.push_back (doubleval).Если вы хотите учиться, учитесь, читая учебные пособия. Это довольно просто. –
Pihhan