爲什麼我會打電話std::string::data()
超過std::string::c_str()
?當然這裏有一些方法來標準的瘋狂...std :: string :: c_str和std :: string :: data有什麼區別?
回答
c_str()返回一個指向帶有NUL字節的數據的指針,因此可以使用返回值作爲「C字符串」。
data()返回指向數據的指針而不做任何修改。
如果您使用的代碼假定一個字符串是NUL終止(例如寫入處理C字符串的任何函數),請使用c_str()。
現在MS STL 10.0那裏似乎沒有什麼區別,因爲我看到這個標題:
... \微軟的Visual Studio 10.0 \ VC \包括\ xstring
const _Elem *c_str() const
{ // return pointer to null-terminated nonmutable array
return (_Myptr());
}
const _Elem *data() const
{ // return pointer to nonmutable array
return (c_str());
}
所以他們返回相同的東西。
不再是真的。它在VC 9.0中看起來也完全一樣。 – 2011-07-06 22:31:44
這是當前標準允許的行爲,並且是下一個標準所要求的行爲。我懷疑大多數圖書館現在都在這樣做了一段時間,準備轉換。 – 2011-07-07 05:16:44
謝謝丹尼斯。 – 2011-07-07 09:37:08
- 1. 的std :: string :: c_str()和臨時
- 2. std :: to_string,boost :: to_string和boost :: lexical_cast <std::string>有什麼區別?
- 3. C++ std :: string和string
- 4. std :: string name和std :: string&name之間的C++區別
- 5. String和new String有什麼區別?
- 6. std :: set和std :: vector有什麼區別?
- 7. std :: merge和std :: set_union有什麼區別?
- 8. std :: string和stdarg.h
- 9. std :: std :: string保證.c_str()返回相同的結果嗎?
- 10. Jetty - WebSocket.sendMessage(String data)和void sendMessage(byte frame,String data)之間有什麼區別?
- 11. Cython C++和std :: string
- 12. std :: string :: append(std :: string)錯誤的輸出
- 13. C++循環std :: vector <std :: map <std :: string,std :: string>>
- 14. std :: string xml string to object
- 15. 使用std :: sscanf和std :: string的C++
- 16. 爲什麼不支持連接std :: string和std :: string_view?
- 17. std :: sort on std :: vector <std::string>
- 18. print unordered_map <std :: string,std :: list <std::string>
- 19. ctypes python std :: string
- 20. 爲什麼std :: cin.getline沒有采用std :: string的oveloaded方法?
- 21. 的std ::列表<std::string> ::迭代器的std :: string
- 22. OkHttp的.string()和.toString()有什麼區別?
- 23. 搜索爲std :: string
- 24. lambda和std :: function有什麼區別?
- 25. 「UTF-16」和「std :: wstring」有什麼區別?
- 26. string :: c_str查詢
- 27. 的std :: string到LPOLESTR
- 28. string.Equals(「string」)和「String」.Equals(string)的區別是什麼?
- 29. 爲什麼我的std :: string被截斷?
- 30. 什麼'的std :: string(*)(INT)確實星座(*)`
只想指出,在下一個版本的C++ [C++ 11或C++ 0x或任何你想調用它的東西]中,這兩個函數的定義是同義詞。 – 2011-07-06 22:33:11