C++提取字符串中的正整数

输入一个字符串,提取出该字符串中的所有正整数。
输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。输出若干行,每行是一个字符串中的正整数,若输入的字符串中无正整数,则输出None
样例输入:北京大学于1898年成立,已成立100余年。
样例输出:1898
100

首先判断是否是数字,其实就是判断ascii的区间即可

ChatGPT尝试为您解答,仅供参考
首先,我们需要将输入的字符串读入一个字符串流中,然后遍历字符串流中的每一个字符。如果遇到数字字符,我们就把它加入一个临时整数变量中,直到遇到非数字字符时,再将这个整数输出到输出流中。


具体实现如下:

#include <iostream>
#include <sstream>

int main() {
  // 读入字符串
  std::string input;
  std::getline(std::cin, input);

  // 创建字符串流
  std::istringstream input_stream(input);

  // 遍历字符串流
  bool found = false;
  while (input_stream.good()) {
    int num = 0;
    // 尝试从字符串流中读入一个整数
    input_stream >> num;
    if (input_stream.fail()) {
      // 如果读入失败,说明遇到了非数字字符
      // 忽略这个字符,继续遍历
      input_stream.clear();
      input_stream.get();
      continue;
    }
    // 输出整数
    std::cout << num << std::endl;
    found = true;
  }

  // 如果没有找到正整数,输出 "None"
  if (!found) {
    std::cout << "None" << std::endl;
  }

  return 0;
}

这样,我们就可以使用 C++ 程序来提取字符串中的正整数了。