問題タブ [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.

0 投票する
8 に答える
75486 参照

c++ - Char*[]の初期化

タイトルに質問があります。char*[]を初期化し、C++で値を指定するにはどうすればよいですか。ありがとうございます。

0 投票する
4 に答える
2880 参照

c++ - C++ で char* が書き込み可能で、読み取り専用になる場合があるのはなぜですか

char*最近、理解に大きな問題がありました。a を元に戻す再帰関数を作成したとchar*しますが、それを初期化する方法によってはアクセス違反が発生し、C++ の入門書では理解するための正しいパスが見つからなかったので、あなたの助けを求めています。

ケース 1 文字を入れ替えようとしたときにアクセス違反が発生した最初のケ​​ース:

CASE 2次に、これを試してみました

CASE 3しかし、その後、私がカウトをしたとき、最後にランダムながらくたが出たので、

CASE 4それはうまくいったので、なぜこれがうまくいかないのかを自分に言い聞かせました

CASE 5で失敗しました。次のようなことができるとどこかで読んだことがあります

次に、それに何かを追加します。私の質問は、なぜ失敗するものと失敗しないものがあるのか​​、そしてそれを行う最善の方法は何ですか?

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

c# - C# から呼び出されたアンマネージ C++ DLL、CString が DLL で使用されるとクラッシュする

こんにちは、最も優秀な Stackoverflowians

Visual Studio 2008 チーム システムを使用して、

私は単純な機能を持つc ++ dll(mfc静的にリンクされた通常のdll)を持っています

C# アプリケーションから DLL への DLLImport は機能し、C# コードからデバッガーからこの関数内にステップ インできます。この CString のインスタンス化にヒットすると、アプリ全体がクラッシュし、デバッガーが表示します

「ステップできません。プロセスは終了しました。別の接続を試行する前に、プロセス リストを更新してください」

この問題を解決するために私が何をすべきかについて誰か提案がありますか?

よろしくバズ

0 投票する
4 に答える
9584 参照

c++ - g ++コンパイラでstrlenを使用して配列の長さを取得する

次のg ++​​コンパイラを使用してソースをコンパイルしているときに、このエラーが発生する理由を誰かが説明できますか

これにより、次のエラーが発生します

test.cpp: 関数 'int main()' 内:

test.cpp:31: エラー: 'strlen' はこのスコープで宣言されていません

#include <string>#include <string.h> orに変更する#include<cstring>と正常に動作し#include<string>ます#include<string.h>。どんな助けにも本当に感謝します

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

c - 関数呼び出し内で cstring の配列を初期化する

なぜ私はこれを行うことができます:

しかし、これではありません:

関数呼び出し内で cstring の配列を初期化することは不可能ですか?

その他のちょっとした情報は次のとおりです。

0 投票する
4 に答える
4726 参照

c - このように cstring の配列を初期化できないのはなぜですか?

これがエラーを返すのはなぜexpected expression before ‘{’ tokenですか? このように配列を初期化する理由は、後で次のように内容を変更できるようにするためです。

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

c - このように 2 次元配列が適切に初期化されていると仮定できますか?

次のように 2 次元配列を宣言すると、次のようになります。

この配列の他のすべての文字が に設定されていると仮定できます\000か?

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

c++ - UTF-8、CString、CFile? (C++、MFC)

私は現在、特にUTF-8で動作する必要があるMFCプログラムに取り組んでいます。ある時点で、UTF-8 データをファイルに書き込まなければなりません。そのために、CFiles と CStrings を使用しています。

utf-8 (より正確にはロシア語の文字) データをファイルに書き込むと、出力は次のようになります。

など。これは確実に utf-8 ではありません。このデータを正しく読み取るには、システム設定を変更する必要があります。非 ASCII 文字をロシア語のエンコーディング テーブルに変更することはできますが、ラテン語ベースの非 ASCII 文字はすべて失敗します。とにかく、それは私がそれを行う方法です。

何か不足していますか?代わりに何か他のものを使用しますか? 私が見逃したある種のキャッチはありますか?仲間のプログラマーの皆さんの知恵と経験に耳を傾けます。

編集:もちろん、質問したばかりなので、ここで見つけることができる興味深いものをついに見つけました。私はそれを共有するかもしれないと思った。

編集2:

さて、BOM をファイルに追加しました。ファイルには中国語の文字が含まれています。おそらく、行を UTF-8 に変換していないためです。ボムを追加するには...

そしてその後、私は追加しました...

しかし、TestLine の長さを取得する方法がよくわからないため、コンパイルできません。strlen は TCHAR を受け入れないようです。 修正され、代わりに 1000 の静的な長さが使用されました。

編集3:

だから、私はこのコードを追加しました...

コンパイルは問題なく行われますが、新しいファイルを見てみると、この新しいコードがまったくないときとまったく同じです (例: Ðàñïå÷àòàíî:)。一歩も踏み出せなかったような気もしますが、勝敗を分けるのは些細なことだと思います。

編集4:

ネイトが尋ねたので、以前に追加したコードを削除し、代わりに彼のコードを使用することにしました。

すべて正常にコンパイルされますが、ロシア語の文字は ??????? と表示されます。近づいていますが、まだそうではありません。ところで、私を助けようとした/助けようとしてくれたすべての人に感謝したいと思います。私はこれでしばらく立ち往生しています。この問題がなくなるのが待ちきれません。

最終編集 (私は願っています) 最初に UTF-8 文字を取得する方法を変更することで (本当に知らずに再エンコードしました)、これはテキストを出力する新しい方法で間違っていましたが、許容できる結果が得られました。ファイルの先頭に UTF-8 BOM 文字を追加することで、Excel などの他のプログラムで Unicode として読み取ることができます。

万歳!みんなありがとう!

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

c++ - ファイルが開かず、デバッガーの外部で実行するとセグ フォールトが発生する (c++)

こんにちは(事前に感謝します)

私はちょっと困惑しています。なぜセグフォルトをしているのか理解できません。

いくつかのメモ:

  1. これはコース用です。残念ながら、std::string の代わりに C 文字列を使用する必要があります。
  2. 私のコードを修正しないでください (私はその方法を学びませんし、あなたを悩ませ続けます)。私の論理の欠陥を指摘し、別の機能/方法を提案してください。
  3. プラットフォーム: Suse Linux 11.2 (2.6.31 カーネル) 上の gcc バージョン 4.4.1

これがコードです

main.cpp:

Dict.h/.cpp

Entry.h/cpp

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

c - より大きなcharポインタのリストでcharポインタの配列を上書きする方法は?

私の関数には、とりわけ、引数を持つコマンドを構成する単語へのポインターの NULL 終了配列を含む構造体が渡されています。

引数のリストでグロブ一致を実行して、それらをファイルの完全なリストに展開し、渡された引数配列を新しい展開された配列に置き換えたいと考えています。

グロビングは正常に機能しています。つまり、g.gl_pathv に予期されるファイルのリストが入力されています。ただし、この配列を指定された構造体にコピーするのに問題があります。

編集 1: また、プログラムを cmd->argv[0] としてそこに戻す必要があることに気付きました
編集 2: calloc への呼び出しを追加しました
編集 3: Alok からのヒントを使用してメモリ管理を編集します
編集 4: Alok からのその他のヒント
編集 5:ほとんど動作しています..コマンド構造体を解放するときにアプリのセグメンテーション違反

最後に:終端のNULLが欠けていたようですので、次の行を追加してください:

それを機能させるように見えました。