2015-07-03 114 views
-3

我有一个看起来很简单的问题,但我不能让它工作。我使用标准的C++函数append()在另一个字符串(str1)的末尾添加空格“”和另一个单字符串(str2)追加空格和一个字符串到字符串的末尾

我的代码在我仅追加一个或另一个,即:

str1.append(" "); 

或:

str1.append(str2); 

然而,当我尝试都连续这样追加:

str1.append(" "); 
str1.append(str2); 

我立即得到一个分割错误。我很困惑它如何处理一个追加,但不是两个!有没有人看到解决方法?

在此先感谢!

+1

[Works for me](http://ideone.com/hQtiqA)。 –

+0

你的程序比2行大得多。我敢打赌'str1'和/或'stri2'在你发布的这些行被执行的时候无效或者被破坏了。 – PaulMcKenzie

+0

请发布[MCVE](http://stackoverflow.com/help/mcve)。 –

回答

-3

所以原来str2实际上是一个双重的,我已经存储为一个字符串,它应该仍然工作。但是由于某些原因,即使它是一个字符串,C++也不会使用它。于是我又切换STR2回双用STOD(STR2),然后回字符串再次在串联这样:

str2=stod("stuff"); 
str1.append(to_string(str2)); 

不知道为什么这个工程,而其他方式不(两种方法输入一个字符串到append()),但它的工作原理!

+3

这不是一个答案。当你改变良性的代码行时突然“起作用”的代码表示内存损坏。所以你真的没有解决任何问题。无论你之前有什么bug,都可能转移到应用程序的另一部分。我建议你将代码改回原来的方式并且真正解决问题。 – PaulMcKenzie

+1

请看这个例子:http://ideone.com/9K2eT9你看我得到一个runitme错误。现在看到这个例子:http://ideone.com/ks6sXF没有运行时错误。现在我们假设我的应用程序更大,并且我使用足够的代码来获取运行时错误*而不真正解决真正的问题*,在这种情况下,它将访问“delete”d指针。这就是为什么你的答案不是一个有效的答案 - 它没有描述你的解决方案“工作”的实际原因,因此它不是一个解决方案。 – PaulMcKenzie

相关问题