問題タブ [cstring]
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++c文字列の配列/他のタイプの配列を削除します
[編集]
さて、それは理にかなっているので、sharptoothとCashCowに感謝します。constとして割り当てられたデータを削除することはできません。これにより、文字列リテラルが問題から外れます。したがって、初期化を次のように変更すると、次のようになります。
forループをハードコーディングして、i=1とi=2のみを繰り返すようにすると、すべてが機能します。
int arraySize = sizeof arr / sizeof *arr;
配列がローカルではなくnew[]で割り当てられている場合にのみ、機能するように見えることに気付きました。これは、元のchar ** groups;
変数がポインターに減衰するためですよね?
今、私は疑問に思っていますが、データが定数であるかどうかを判断する方法はありますか?
[オリジナル]
配列とポインタは悪であり、ベクトルとリンクリストと呼ばれるこれらの素晴らしいものがあることを私は知っています。
しかし、私はメモリ管理に関しては初心者であり、少しマゾヒスティックな感じがします。C文字列の配列を作成するとします。この質問type a = new type[len];
とFAQ-Liteから、と一致する必要があることがわかりますdelete[] a;
。またはそう思います。
FAQ-Liteはここでジャグ配列の管理について話しますが、彼は行列に焦点を合わせており、それが私が行っていることに当てはまるかどうかはわかりません。
このコードは私には理にかなっていますが、でのアサーション(Visual Studio 2008でのデバッグ)に失敗しますdelete[] a;
。これの何が問題になっていますか?また、このタスクを実行するにはどうすればよいですか?
c++ - NULL で終了する文字列とその長さ
私は、NULL文字列を表すために、いくつかの独自のものを受け取り、それを解析し、(メッセージを表すクラスに埋め込まれた)静的なchar配列の束を作成するレガシーコードを持っています。その後、文字列へのポインターがすべて渡され、最終的に何らかのバッファーにシリアル化されます。
プロファイリングは、str*()
メソッドに多くの時間がかかることを示しています。
ですので、可能であれば利用したいと思いmemcpy()
ます。それを達成するには、長さを NULL 終端文字列へのポインタに関連付ける方法が必要です。私は考えました:
メモリの割り当てとスレッドの同期が必要なため、使用
std::string
すると効率が悪くなります。使えます
std::pair<pointer to string, length>
。しかし、この場合、「手動で」長さを維持する必要があります。
どう思いますか?
c++ - C ++、OpenGL:c-stringsの奇妙な問題
ここにC++の問題がありますが、これは単純に理解できません。
私は2つのわずかに異なる機能を持っています。どちらもまったく同じことをする必要があります。ただし、正しく機能するのは1つだけです。
メソッド1:メソッドの入力は'const string samplerName = "test"'
方法2:
ご覧のとおり、glGetUniformLocationは2つの異なる値を返します。正しい戻り値は、「-1」ではなく「0」になります。では、2つの呼び出しの違いは正確には何でしょうか。
quote: "c_str()は、文字列オブジェクトと同じ内容のnullで終了する文字シーケンス(c-string)を生成し、それを文字配列へのポインタとして返します"。そして、それこそが、メソッドglGetUniformLocation(...)が2番目のパラメーターとして必要とするものです。では、なぜ上記の方法2だけが成功するのでしょうか。コンパイラの問題ですか?
Win7でMSVisualStudio2008を使用しています。
私はこのバグを2日近く探しています。私は本当にこれを明確にしたいと思います。それは私を夢中にさせました...
ありがとうウォルター
編集:
これも機能しません。
c - C文字列の最初の部分を削除します
私はこれを理解するのに多くの問題を抱えています。C文字列があり、その最初の部分を削除したいと思います。「食品、量、カロリー」としましょう。これらの値をそれぞれコピーしたいのですが、コンマはコピーしません。カンマを見つけて、カンマの位置をメソッドに返します。それから私は使用します
「theLine」を配列「i」の最初の「end」文字のみでコピーするには(最初のコンマがあるので、初めて「end」は4になります)。しかし、ループ内にあるため、配列から「Food」を削除して、プロセスをやり直したいと思います。ただし、最初の部分を削除して(または配列ポインターを前方に移動して)残りの部分を保持する方法がわかりません。どんな助けでも役に立ちます!
visual-studio-2008 - std::map 安っぽい文字はリリースモードでのみ
関数のパラメーターとして std::map があり、デバッグ モード (VS2008) ではマップに正しいキーと値がありますが、リリースでプログラムを開始すると、マップにひどい文字が入ります!
コード ダンプ:
このコードがリリースモードで機能しない理由はありますか???
感謝と挨拶
c++ - Format() を使用してフォーマットされた CString で無効なデータが取得されるのはなぜですか?
ファンキーな値やクラッシュが発生し続けます。どんな提案でも大歓迎です。
visual-c++ - VC++ で OLECHAR* を CString に変換しますか?
VC++に変換OLECHAR*
する方法は?CString
c++ - CString エラー、'CString': は 'ATL::CStringT のメンバーではありません'
私はこれをやろうとしています:
しかし、コンパイラ エラー C2039:'CString': is not a member of 'ATL::CStringT' が発生します。
これは非 MFC ベースの dll ですが、ドキュメントによると、インクルード #include atlstr.h で CString 機能を使用できるはずです。
ありがとう
c++ - C++での型の変換エラー
Format()を使用する必要があるプログラムがあります。文字列リテラルとintをCString変数に結合する関数。私はこれを行うためのいくつかの異なる方法を試しました、それらのコードはここにあります:
最初のものはエラーC2664を返します:'void ATL :: CStringT :: Format(const wchar_t *、...)':パラメータ1を'constchar[33]'から'constwchar_t*'に変換できません
2つ目は、エラーはありませんが、テキストは漢字で表示されます。
3番目はエラーC2440を返します:'static_cast':'constchar[33]'から'wchar_t'に変換できません
CStringsをwchar_t*sに変換するためのアイデアはありますか?
ありがとう
c++ - 文字列のネストされたベクトルのトラバース
私のコードには、ネストされた文字列のベクトルに関する問題があります。文字列を印刷していません。