Одна из возможностей - использовать std::istringstream
для получения отдельных слов в каждой строке.При переборе каждого слова увеличивайте счетчик, который отслеживает количество обработанных слов.
Если вам нужно обработать второе слово в каждой строке, вы должны проверить, равно ли значение счетчика 1 (предполагая, что при переходе на новую строку счетчик инициализируется равным 0).
Поскольку вы упомянули, что вы можете проверить, является ли данная строка числом, я не предоставил реализацию для isNumber()
function.
Ниже приведен исходный код, который печатает каждую строку + каждое слово, «имитируя» вызов вашей функции isNumber()
, для каждого второго слова (в каждой строке ввода).
#include <iostream>
#include <sstream>
#include <string>
bool isNumber(const std::string& s) {
// TODO
return true;
}
int main() {
std::string s;
std::string word;
int lineNum = 0;
int wordNum = 0;
while (std::getline(std::cin, s)) {
std::cout << "Line number " << lineNum << ": " << s << "\n";
std::istringstream iss(s);
wordNum = 0;
while (iss >> word) {
std::cout << "\tWord number " << wordNum << " in line "
<< lineNum << ": " << word << "\n";
if (wordNum == 1 && isNumber(word))
std::cout << "'" << word << "' is a number\n";
wordNum++;
}
lineNum++;
}
return 0;
}