这是我的代码:
//Declare variables for location of spaces
int i = 0;
char ignore;
vector<int> spaces;
int location;
int x = 0;
//Begin finding the spaces
while (!inData.eof())
{
inData >> location;
i = location - 1;
i++;
spaces.push_back(i);
inData >> ignore;
}
for (int x = 0; x <= spaces.size(); x++)
{
output[spaces[x]] = ' ';
}
这不是完整的代码,但它是问题的根源。
输出是一串加密的单词。我的 vector 保存空格在字符串中的位置,因此我在 vector 中使用这些数字用空格替换字母。
为了更好地解释,我有一个加密的单词,我已经将字母移回了它们应该在的位置。
output = "HelloWorldqBye"
空格位于 5
和 11
位置。该 vector 包含这些数字。
output[spaces[x]] = ' '
应将这些字母替换为空格以生成 output = "Hello World Bye"
但它会使程序崩溃。
我不知道我的问题是什么,而不是因为 vector 在数组中?
我知道如何在不让我的程序崩溃的情况下做到这一点的唯一另一种方法是将空间位置存储在一个数组中,它可以工作,但是我必须声明我的数组的大小以及进行 for 循环<= 数组的确切大小,否则它会崩溃,并且输出字符串中的空格数量永远不会相同,除非有人每次输入 3 个单词。 “Hello World Bye”
只是一个示例,但实际情况是它永远不会是同一个字符串。
非常感谢任何帮助解决我的问题。
最佳答案
for (int x = 0; x <= spaces.size(); x++)
^ problem is here
数组、字符串、 vector 等的索引总是从0
开始编号。至 size-1
,包括在内,但是您的 for 循环正在访问 size
处的 vector , 超出 vector 末尾的一个。这会导致未定义的行为:在本例中为崩溃。
将其更改为 <
相反。
关于c++ - 我可以在字符串中包含 vector 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26502460/