我知道爲什麼會發生分段錯誤,但我無法根據下面的代碼找出錯誤,以便根據空格分割字符串。另外,如果我在拆分函數中註釋掉while循環,當打印出結果字符串時,我會得到數字。是否因爲to_string?如果我使用typeid(variable).name()
對我在主函數中打印時得到的結果字符串進行處理,則會得到:NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
。爲什麼我會收到分段錯誤?輸出爲數字而不是字符串的原因是什麼?
-2
A
回答
3
要回答你的最後一個問題:
C++經常,但並非總是如此,對待一個char
值作爲數字,當然有,如果你把它傳遞給to_string
。因此to_string(' ')
將返回"32"
(通常),這是用十進制數轉換爲字符串的空格的字符代碼。
要將字符轉換爲相應的單元素字符串,請使用例如string(1, ' ')
。
對於您的分段錯誤,調試器是正確的工具。
0
你的分割功能是越野車。你的程序會一直暗戀,因爲while循環中的while(to_string(s[a]) != " ")
條件會導致無限循環。
對我來說,使用to_string(s [a])似乎很奇怪。假設s [a]實際上是空格char,即使在這種情況下,toString(「」)將返回一個包含「32」的std :: string。而「32」不等於「」,所以這會導致你的循環無限運行。
而且因爲在循環中你正在增加像下面這樣的索引。
a++; ---> You increase the index in infite loop so a can go to millions
temp = temp + s[a]; ---> you are using the index and causing index out of range.
您將導致索引超出範圍錯誤。
相關問題
- 1. 字符串數組加字符串不是錯誤,爲什麼?
- 2. 爲什麼我會收到「非法字符串偏移」錯誤?
- 3. 爲什麼我會收到錯誤「db_name必須是字符串或符號」?
- 4. 在字符串連接中導致此分段錯誤的原因是什麼?
- 5. scapy.sprintf的輸出是一個原始字符串嗎?爲什麼長度錯誤?
- 6. 爲什麼我會收到分段錯誤錯誤?
- 7. 爲什麼我不能回到回購站,錯誤的原因是什麼?
- 8. 字符串被分割爲'list()'而不是'[]'爲什麼?
- 9. 爲什麼我總是收到錯誤
- 10. 爲什麼輸出是「字符串」。意外的輸出
- 11. 爲什麼MongoDB.Bson.BsonExtensionMethods.ToBson返回字節數組而不是字符串?
- 12. 爲什麼我會收到「ArrayIndexOutOfBoundsException:0」? (字符串數組)
- 13. 爲什麼我的字符串分配會導致分段錯誤?
- 14. 什麼是「舊系統」,爲什麼我會因爲缺少宏而在2012年收到錯誤?
- 15. 爲什麼我會將「null」作爲輸出字符串? Java
- 16. 爲什麼會出現分段錯誤?
- 17. 爲什麼會出現分段錯誤?
- 18. 爲什麼會出現分段錯誤?
- 19. 爲什麼在我的字符串中有`=`而不是`\ x`?
- 20. 以這種方式分配字符串的原因是什麼?
- 21. 爲什麼我會收到錯誤「不是GROUP BY表達式」?
- 22. 爲什麼我會收到錯誤「MyActivity不是封閉類?」
- 23. 爲什麼錯誤的URL是從我的字符串
- 24. 爲什麼我不能接收字符串,它是空
- 25. 爲什麼我會收到錯誤「java.util.NoSuchElementException」?
- 26. 爲什麼我會收到'ArrayIndexOutOfBoundsException'錯誤?
- 27. 爲什麼我會收到NZEC錯誤?
- 28. 爲什麼我會收到glibc錯誤?
- 29. 爲什麼我會收到Ada錯誤?
- 30. 爲什麼我會收到authentication_redirect_to_virtual_host錯誤?
程序應該做什麼?另外,因爲你似乎在Linux上,你有沒有嘗試過使用gdb? – tambre
'std :: string :: find'和'std :: string :: substr'已經足夠你 – Danh
所有這些標籤真的有必要嗎? – byxor