タグ付けされた質問 「stdstring」

std :: stringは、C ++標準ライブラリのバイトベースの「文字列」型で、<string>ヘッダーで定義されています。

2
なぜ `std :: string :: find()`は失敗時に終了イテレータを返さないのですか?
の動作がstd::string::find標準のC ++コンテナと一致しないことがわかりました。 例えば std::map&lt;int, int&gt; myMap = {{1, 2}}; auto it = myMap.find(10); // it == myMap.end() しかし、ひもについては、 std::string myStr = "hello"; auto it = myStr.find('!'); // it == std::string::npos 代わりに失敗したmyStr.find('!')リターンをすべきではないmyStr.end()のstd::string::nposですか? std::stringは他のコンテナと比較するとやや特殊なので、これには何らかの理由があるのか​​と思います。(驚いたことに、私はこれをどこかで疑う人を見つけることができませんでした)。



1
std :: stringとCスタイルの文字列リテラルの比較
次のコードがあるとします。 #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;iomanip&gt; using namespace std; // or std:: int main() { string s1{ "Apple" }; cout &lt;&lt; boolalpha; cout &lt;&lt; (s1 == "Apple") &lt;&lt; endl; //true } 私の質問は次のとおりです。システムはどのようにこれら2つをチェックしますか?s1はオブジェクト"Apple"ですが、Cスタイルの文字列リテラルです。 私の知る限り、異なるデータ型を比較す​​ることはできません。ここで何が欠けていますか?

1
MINGW gccでコンパイルすると、std :: stringに対してオーバーロードされた新しい演算子が呼び出されない
このプログラム(オプションでコンパイル-std=c++17) #include &lt;stdio.h&gt; #include &lt;string&gt; void* operator new(std::size_t nrOfBytes) { printf("allocate %zd bytes on heap\n", nrOfBytes); void* p = malloc(nrOfBytes); if (p) { return p; } else { throw std::bad_alloc{}; } } int main() { // new operator is called when compiled with Clang or MSVS or GCC int* i …
8 c++  gcc  stdstring  gcc9 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.