为什么此代码导致未处理的异常失败

why this code gives Unhandled exception failure

本文关键字:异常 失败 未处理 代码 为什么      更新时间:2023-10-16

我使用了一个向量,因为我不知道输入的数量,但它不起作用。我该怎么办?

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为空,因此当您访问第一个元素(在索引0处(时,您有未定义的行为。您可以通过为向量中的一个字符串分配空间来解决此问题:

vector <string> str(1);

或者直接创建一个带有一个字符串的向量(这将创建字符串,并将其正确放入向量中(:

vector <string> str = {"entity1 ABCDE 2x2 infected"};

但是,从您的示例代码来看,您似乎根本不需要vector,单个string就足够了:

string str = "entity1 ABCDE 2x2 infected";
std::istringstream ss(str);