我使用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
答案 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;
}