問題タブ [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.
c++ - C++: この文字列入力が失敗するのに、他の文字列は失敗しないのはなぜですか
私は友人からこの問題を受け取りました
私の最初の観察は、riddle()
渡された単語の数がinput
3 単語を超える場合、関数はガベージを生成しないということです。2番目のケースではなく、最初のケースで失敗する理由をまだ確認しようとしています。とにかく、これは共有するのが楽しいと思いました。
c - strchr と strrchr が同じ結果を返す
何らかの理由で、試しても を試してstrchr
もstrrchr
、同じ値が返されます。理由がわかりません。
問題を引き起こしているコードの一部を次に示します。
入力はJane Austen, 6
で、コンマの前とコンマの後の 2 つの文字列に分けようとしています。ただし、出力が ALWAYS であるため、 strrchr(input, ',');
orの使用は無意味に思えます。誰かが理由を説明できますか?strchr(input, ',');
, 6
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()
を行うことで、この例を簡単に機能させることができますが、もちろんこれは危険です。ブースト開発者がそのような重要な過負荷を除外した理由はありますか? なぜ彼らは最初に引数として使用しなかったのですか?k
v
const std::string&
そして、このコードをなしで機能させるにはどうすればよい.c_str()
ですか? ポインタメモリが内部的にコピーされるという兆候はありません(とにかく奇妙です)。時間を遡って自分でメモリを管理する気はありません:-)
c++ - std::string の c_str 関数を指すポインタの有効期間
まず、次のようにリストされたコード。
実行すると、次のようになります。(Linux gcc)
cs = 123456
cs = 123456
したがって、 s が破棄された後にcsポインターが有効である理由がわかりません。つまり、std::string の c_str 関数を指すポインターの有効期間です。