c++ - 为什么此代码给出未处理的异常失败
问题描述
我使用了向量,因为我不知道输入的数量,但它不起作用。我应该怎么办?
vector <string> str;
str[0] = "entity1 ABCDE 2x2 infected";
std::istringstream ss(str[0]);
std::string token;
vector<string> genes;
while (std::getline(ss, token, ' ')) {
genes.push_back(token);
}
for (int i = 0; i < genes.size(); i++) {
cout << genes[i];
}
解决方案
在这段代码中:
vector <string> str;
str[0] = "entity1 ABCDE 2x2 infected";
str
是空的,因此当您访问第一个元素(在 index 处0
)时,您有未定义的行为。您可以通过为向量中的一个字符串分配空间来解决此问题:
vector <string> str(1);
或者直接用一个字符串创建一个向量(这将创建字符串,并将其正确放入向量中):
vector <string> str = {"entity1 ABCDE 2x2 infected"};
但是,从您的示例代码来看,您似乎根本不需要 a vector
here,一个string
就足够了:
string str = "entity1 ABCDE 2x2 infected";
std::istringstream ss(str);
推荐阅读
- c# - 可空引用类型和任一模式
- bash - 是否可以使用 bash/shell 在 chrome 中打开多个用户配置文件
- node.js - 如何从连接在同一网络中的任何其他计算机或移动设备访问由 npm run server 命令运行的 vue 项目?
- asp.net-mvc - 所需的防伪 cookie“__RequestVerificationToken”不存在
- php - 如何使用 PHP 使动画 gif 的背景透明?
- security - What's the most secure way to authenticate background queue workers using IdentityServer 4?
- c - 如何在不使用数组的情况下找到丢失的数字?
- azure - 如何在 PowerShell azure 中启动虚拟机作为工作
- linux - Linux命令根据文件名获取最新文件
- vue.js - Vue/Nuxt:如何让组件真正动态化?