stringstream读取逗号分隔整数存入int vector时出现stdout无响应问题
代码问题说明
你的代码存在以下几处核心错误,导致运行无输出:
- 声明的
stringstream对象没有绑定要解析的输入字符串,流为空无法读取任何内容 - 空
vector直接通过下标赋值会触发越界访问,程序直接崩溃,自然不会有标准输出 - 循环次数错误绑定了字符串的字符长度,和实际要提取的整数数量完全不匹配
- 每次读取整数后强制读取分隔符的逻辑,在处理最后一个无后置逗号的整数时会直接失败
修正后的完整代码
#include <sstream> #include <vector> #include <iostream> using namespace std; vector<int> parseInts(string str) { stringstream myString(str); // 绑定输入字符串到流 vector<int> of_integers; char ch; int a; // 以是否成功读取到整数作为循环条件 while(myString >> a) { of_integers.push_back(a); // 用push_back追加元素 myString >> ch; // 读取逗号分隔符,最后一个整数后无逗号读取失败不影响已存的结果 } return of_integers; } int main() { string str; cin >> str; vector<int> integers = parseInts(str); for(int i = 0; i < integers.size(); i++) { cout << integers[i] << "\n"; } return 0; }
内容的提问来源于stack exchange,提问作者Rimita Goni
相关产品推荐
相关产品推荐

