这是我的代码:
//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循环<= the数组的确切大小,否则将崩溃,并且除非有人每次输入3个单词,否则输出字符串中的空格数量将永远不会相同。"Hello World Bye"
只是一个示例,但现实情况是,它永远不会是同一字符串。
非常感谢您为解决我的问题提供的任何帮助。
for (int x = 0; x <= spaces.size(); x++)
^ problem is here
数组,字符串,向量等的索引始终从编号0
到size-1
,包括端值,但您的for循环正在访问处的向量size
,该向量超出了向量的末尾。这将导致不确定的行为:在这种情况下,将导致崩溃。
将其更改为<
代替。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句