这是我的代码:
//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]] = ' ';
}
这不是完整的代码,而是问题的来源 输出是一串加密的单词。我的向量包含空格位于字符串中的位置,因此我使用向量中的这些数字用空格替换字母。
为了更好地解释,我有一个加密的单词,我已经将这些字母移回原来的位置。
output = "HellopWorldqBye"
这些空格位于5
和11
位置。向量包含这些数字。
output[spaces[x]] = ' '
应该用空格替换这些字母output = "Hello World Bye"
,但它会导致程序崩溃。
我无法弄清楚我的问题是什么,而不是因为矢量在数组中?
我知道如何在没有崩溃我的程序的情况下执行此操作的唯一方法是将空间位置存储在数组内部而且它可以工作但是我必须声明我的数组的大小以及制作for循环&lt; =数组的确切大小,否则它会崩溃,输出字符串中的空格量将不会相同,除非每次输入3个单词。 "Hello World Bye"
只是一个例子,但事实是它不会成为同一个字符串。
非常感谢任何帮助解决我的问题。
答案 0 :(得分:4)
for (int x = 0; x <= spaces.size(); x++)
^ problem is here
数组,字符串,向量等的索引始终从0
到size-1
进行编号,但是你的for循环正在访问size
处的向量,一个超出结束的向量矢量。这会导致未定义的行为:在这种情况下,崩溃。
改为将其更改为<
。