Как проверить, является ли вторая строка в строке числом? - PullRequest
0 голосов
/ 12 ноября 2018

Я использую c ++ в качестве языка программирования.Я пытаюсь проверить, является ли второе строковое значение строки числом после использования isstringstream, чтобы преобразовать его в int.

. Проверить первое значение строки легко, поскольку это первое значение., но как проверить, является ли второе значение строки int.Я едва выучил getline(), поэтому я бы предпочел метод не слишком сложный.

Я использовал операторы if, но, похоже, ничего не работает.

44 68 usable BothMatch  
100 90 usable BothMatch
110 120 usable BothMatch
183 133 usable BothMatch
170 140 usable BothMatch
188 155 usable BothMatch

1 Ответ

0 голосов
/ 12 ноября 2018

Одна из возможностей - использовать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...