如何检查一行中的第二个字符串是否是数字?

时间:2018-11-12 17:01:46

标签: c++ visual-c++

我使用c ++作为编程语言。我正在尝试使用isstringstream将line的第二个字符串值转换为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 :(得分:0)

一种可能性是使用std::istringstream在每一行上获取单个单词。遍历每个单词时,增加一个计数器以跟踪已处理了多少个单词。

如果需要在每一行上处理第二个单词,则必须检查计数器值是否等于1(假设移至新行时,计数器初始化为0)。

由于您提到可以检查给定的字符串是否为数字,所以我没有提供isNumber()函数的实现。

下面有一些源代码,用于打印第二行(输入的每一行)中的每一行+每个单词,“模拟”对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;
}