【问题描述】
输入一个字符串,含有数字和非数字字符,如“sum=abc+234;while(abc==700)tab{ass=346++;bss=abc+267;}”,将其中连续的数字作为一个整数,依次存放到一个数组nums中。例如,234放在nums[0],700放在nums[1]……,统计共有多少个整数,并输出这些整数。结合指针和自定义函数完成该题。
【输入形式】sum=abc+234;while(abc==700)tab{ass=346++;bss=abc+267;}
【输出形式】There are 4 integers:234 700 346 267
【样例输入】sum=abc+234;while(abc==700)tab{ass=346++;bss=abc+267;}
【样例输出】There are 4 integers:234 700 346 267
按照题目给定的输入输出完成。
#include <iostream>
#include <string>
#include <vector>
using namespace std;// 函数声明,用于判断一个字符是否为数字字符
bool isN(char c);int main()
{// 用于存储输入的字符串string str;// 循环变量,用于遍历字符串int i;// 记录数字字符开始的位置int start = 0;// 用于存储从字符串中提取出来的整数值int number;// 定义一个动态数组(向量),用于存储从字符串中提取出的所有整数vector<int> N;// 获取输入的一行字符串getline(cin, str);// 遍历输入的字符串for (i = 0; i < str.length(); i++){// 如果当前字符是数字字符if (isN(str[i])){// 记录数字开始的位置start = i;// 当当前字符是数字且未超出字符串长度时,继续向后遍历while (isN(str[i]) && i < str.length())i++;// 从字符串中提取出连续的数字字符组成的子串string numberStr = str.substr(start, i - start);// 将提取出的数字字符子串转换为整数number = stoi(numberStr);// 将转换后的整数添加到存储整数的向量中N.push_back(number);}}// 输出提取出的整数的个数信息cout << "There are " << N.size() << " integers:";// 遍历存储整数的向量,输出其中的每个整数for (i = 0; i < N.size(); i++)cout << N[i] << " ";// 输出换行符,使输出格式更美观cout << "\n";return 0;
}// 函数定义,判断传入的字符是否为数字字符('0'到'9'之间)
// 返回值为布尔类型,是数字字符则返回true,否则返回false
bool isN(char c)
{return c >= '0' && c <= '9';
}
C++ vector的超级详细实用用法_vector c++ 库文件-CSDN博客