なぜ私はstd::string::c_str()
よりstd::string::data()
に電話をかけたいですか?確かに標準の狂気にいくつかの方法があります...std :: string :: c_strとstd :: string :: dataの違いは何ですか?
答えて
c_str()は、戻り値を "C文字列"として使用できるようにNULバイトが付加されたデータへのポインタを返します。
data()は、変更のないデータへのポインタを返します。
使用しているコードがNULで終了していると想定している場合(C文字列を処理する関数など)、c_str()を使用します。私は、ヘッダーでこれを見るように今MSのSTL 10.0で、どんな違いがあるようには思えない
:
... \マイクロソフトのVisual Studio 10.0 \ VC \は
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());
}
をXSTRING \含ま
彼らは同じことを返します。
VC 9.0でもまったく同じようです。 –
これは、現在の標準で許可されている動作であり、次の動作で必要となります。私は、大部分の図書館がこれをやっていると思っています。 –
デニスに感謝します。 –
- 1. std:stringとstd :: stringの違い
- 2. visual studio 2008 sp1 std :: string :: c_str()エラー
- 3. Boost Overload strange behavior .. `int(int)、int(std :: string)`が `int(int)、int(std :: string)、std :: string(std :: string)`とどのように違うのですか?
- 4. なぜstd :: string :: max_size()== std :: string :: allocator :: max_size()
- 5. std :: string s =(std :: string) "a" + "b" + "c"; OK?
- 6. char * to std :: string
- 7. std :: stringのセグメンテーションフォルト
- 8. std :: string :: back()
- 9. boost :: interprocess - std :: string vs std :: vector
- 10. ctypes python std :: string
- 11. QString over std :: string
- 12. std :: vector <std::string>クラッシュ
- 13. std :: string to LPCTSTR
- 14. std :: string allocation policy
- 15. std :: string + = operator
- 16. std :: string in C#?
- 17. vC++のstd :: string/std :: wstringのマクロは何ですか? MSDNによると
- 18. のstd ::文字列:: c_str()と
- 19. string :: atとstring :: operator []の違いは何ですか?
- 20. std :: string s()strange behavior
- 21. boost :: format form c-stringまたはstd :: string
- 22. std :: __ cxx11 :: stringをstd :: stringに変換する
- 23. std :: stringと文字列
- 24. コンバートのstd :: stringはQStringの
- 25. std :: stringと同じstrncpyですか?
- 26. std :: std :: stringとstd :: vectorの間の移動<unsigned char>
- 27. const TiXmlStringからconst std :: string&
- 28. なぜstd :: fstreamクラスはstd :: stringをとらないのですか?
- 29. C++ std :: string append vs push_back()
- 30. std :: string、wstring、u16/32string解説
次のバージョンのC++ [C++ 11またはC++ 0xまたはそれを呼びたいもの]では、2つの関数は定義上同義であるとします。 –