2015-07-03 82 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

相關問題