問題タブ [stdstring]
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++ - MD5値が余分な「f」文字で印刷されるのはなぜですか?
std :: stringのat()メソッドを使用すると奇妙な問題が発生します。このライブラリを使用して、指定された文字列のmd5ハッシュを計算したいと思います。http://sourceforge.net/projects/libmd5-rfc/files/ ハッシュは正しく計算されますが、人間の方法で印刷することに問題があります。出力は次のとおりです。
コードは次のとおりです。
「f」の文字はどこから来たのですか?
c++ - cout を使用して、ユーザー定義型から std::string への自動キャストを取得することは可能ですか?
質問のように、クラスで文字列演算子を定義すると:
そして、私はそれを使用します:
明示的なキャストではすべてがうまくいきますが、(文字列) を削除すると、コンパイラは std::string で宣言されたキャスト演算子が必要であると言います。私のタイプを自動的にキャストするべきではありませんか? 解決済み: operator<< (ostream& os, const Literal& l) をオーバーロードしています。
c++ - std :: stringをchar*として渡す必要がある場合、char *よりも優れたアイデアですか?
最近の質問で、のchar*
代わりにパスしなければならない状況があることを学びましたstd::string
。私は本当に好きstring
で、不変の文字列を渡す必要がある状況では、を使用すると問題なく機能します.c_str()
。私の見方では、操作が簡単な文字列クラスを利用することをお勧めします。ただし、入力が必要な関数の場合、次のようになります。
明らかに、これはそうではありません、ええと、簡単です。今、私はC ++にかなり慣れていないので、木の森を実際に見ることはできません。このような状況では、すべての入力をC文字列に変換して、string
の便利なメソッドを利用するために戻す必要がありますが、Cスタイルの文字列操作に慣れることは良い考えですか?この種の絶え間ない前後の変換は、対処するにはあまりにも愚かですか?
c++ - std::string の洗練された文字
私は問題があります。Linux 用のポーランド語 (もちろん、ポーランド語の文字を使用) でアプリを作成していますが、コンパイル時に 80 の警告が表示されます。これらは、「警告: 複数文字の文字定数」と「警告: ケース ラベル値が型の最大値を超えています」です。std::string を使用しています。
std::string クラスを置き換えるにはどうすればよいですか?
助けてください。前もって感謝します。よろしく。
c++ - 文字列の連結が期待どおりに機能しない
これがよくある問題であることはわかっていますが、参考文献やその他の資料を探しても、この質問に対する明確な答えが見つかりません。
次のコードを検討してください。
コンパイラから、 のオーバーロードされた演算子が見つからないことがわかりましたchar[dim]
。
文字列に + 演算子がないということですか?
しかし、いくつかの例では、このような状況があります。これがより多くの文字列を連結する正しい方法でない場合、最善の方法は何ですか?
c++ - std::cout << stringstream.str()->c_str() は何も出力しません
unsigned char && unsigned char の長さを取得する関数で、
結果:
- WAS: 何も出力しません (const.. case へのポインタがあると思います)
- GOOD:印刷データ
- 悪い: 何も印刷しない
- テスト、アサート: mystr.size() が渡された unsigned char サイズと等しいことを出力します。
私は試した:
- string.assign(scp.rdbuf());
- memcpy(文字、scp.str()、10);
- 一時的な文字、文字列を作成/割り当てるさまざまな方法
助けはありません..データを含むstd ::cout 'able std::stringを取得する必要があります(パケットデータであるunsigned charであるfooから選択されました)。
元のfooがヌルで終了していない可能性があるか、問題は次のようなものであると推測します-単純ですが、入ることができません..ここで探すべきものは何ですか?
(このコードは、libpcapp のような既知の C++ マジック ラッパーを使用せずに、C++ の方法でパケットを出力するためだけに、libpcap を使用する別の試みです)。
c++ - wchar_t* を std::string に変換するにはどうすればよいですか?
クラスを std::string を使用するように変更しました (ここで得た回答に基づいていますが、私が持っている関数は wchar_t * を返します。それを std::string に変換するにはどうすればよいですか?
私はこれを試しました:
しかし、エラー C2440: 'initializing' : cannot convert from 'wchar_t *' to 'std::basic_string<_Elem,_Traits,_Ax>' と表示されます
gcc - std:string + int でコンパイルエラーが発生しないのはなぜですか?
同僚が std::string に整数を追加できると考えており、そのような操作をコードのあちこちで使用していることがわかりました。
この操作でコンパイラ エラーは発生しません。理由がわかりませんoperator+ (const string& lhs, int rhs);
。int は暗黙のうちに char にキャストされますか? (gcc Red Hat 4.1.2 および -Wall スイッチでコンパイル)。
そして、最も重要なのは、int が std::string に追加されたすべての行をどのように見つけるのでしょうか?
c++ - std :: stringを正しく返す方法(またはその戻り値を正しく使用する方法)
グローバルなクラスがあるとします(たとえば、アプリのランタイムで利用可能)
最初のフォームを使用すると、私が行うときに奇妙な動作をします
printfが使用する前に、文字列がメモリから消えたように見えます。値を出力する場合もあります。それ以外の場合は、クラッシュするか、何も出力しません。
私が最初にそのように文字列をコピーした場合
物事はうまくいきます。
確かに、一時的な文字列でこれを回避する方法が必要です。
編集:したがって、コンセンサスはconst std :: string&returnvalueを使用することです。
元のコードは問題ないはずだと誰もが言っていることは知っていますが、WindowsCEでMSVC2005に問題が発生しているのを見たことがありますが、CEボックスでのみです。Win32クロスコンパイルではありません。
c++ - VisualStudio2010のコンパイルエラーがstd::string?
ですから、これはおそらく私が最近見た中で最も奇妙なことであり、これがどのように起こり得るのか興味がありました。コンパイラは、戻り型として使用された場合はstd :: stringが未定義であるが、クラスのメソッドでパラメータとして使用された場合は定義されていないというエラーを出しました。
すべてを再構築するそれでもまだ起こったのですが、宇宙を再調整するために、クリーンなソリューションを選択してから、すべてを再構築する必要がありました。今のところ解決されていますが、特にSTLに完全修飾名を常に使用している場合に、競合が発生しない理由がわからないため、これを引き起こした原因を知りたいと思います。