問題タブ [c-str]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
98 参照

c++ - C++: この文字列入力が失敗するのに、他の文字列は失敗しないのはなぜですか

私は友人からこの問題を受け取りました

私の最初の観察は、riddle()渡された単語の数がinput3 単語を超える場合、関数はガベージを生成しないということです。2番目のケースではなく、最初のケースで失敗する理由をまだ確認しようとしています。とにかく、これは共有するのが楽しいと思いました。

0 投票する
2 に答える
168 参照

c - strchr と strrchr が同じ結果を返す

何らかの理由で、試しても を試してstrchrstrrchr、同じ値が返されます。理由がわかりません。

問題を引き起こしているコードの一部を次に示します。

入力はJane Austen, 6で、コンマの前とコンマの後の 2 つの文字列に分けようとしています。ただし、出力が ALWAYS であるため、 strrchr(input, ',');orの使用は無意味に思えます。誰かが理由を説明できますか?strchr(input, ',');, 6

0 投票する
1 に答える
128 参照

c++ - Boost.Program_Options: options_description_easy_init::operator() に std::string のオーバーロードがないのはなぜですか?

次の MCVE を検討してください。

同様のオプションをオブジェクトに挿入するときに C&P コードの量を削減する便利な関数を作成しようとしていoptions_descriptionます (元のコードでは、単純化のために削除された通知機能を使用していますが、ボイラープレートをさらに追加しています)。驚いたことに、を受け入れるオーバーロードがないoptions_description_easy_init::operator()std::stringため、この例では をコンパイルできません

for ループ内およびfor ループ内で呼び出し.c_str()を行うことで、この例を簡単に機能させることができますが、もちろんこれは危険です。ブースト開発者がそのような重要な過負荷を除外した理由はありますか? なぜ彼らは最初に引数として使用しなかったのですか?kvconst std::string&

そして、このコードをなしで機能させるにはどうすればよい.c_str()ですか? ポインタメモリが内部的にコピーされるという兆候はありません(とにかく奇妙です)。時間を遡って自分でメモリを管理する気はありません:-)

0 投票する
3 に答える
126 参照

c++ - std::string の c_str 関数を指すポインタの有効期間

まず、次のようにリストされたコード。

実行すると、次のようになります。(Linux gcc)

cs = 123456
cs = 123456

したがって、 s が破棄された後にcsポインターが有効である理由がわかりません。つまり、std::string の c_str 関数を指すポインターの有効期間です。