問題タブ [null-terminated]
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#/.Net 文字列の長さがプレフィックスされ、null で終了するのはなぜですか?
読んだ後null で終了する文字列の根拠は何ですか? また、C#/.Net の文字列は、内部的には、 BSTR Data Typeのように長さのプレフィックスと null で終了することがわかったいくつかの同様の質問があります。
文字列が長さのプレフィックスと null の両方で終了する理由は何ですか? 長さの接頭辞のみ?
c++ - char* を std::string に正しく変換するには? (expat / std::string(char*) 使用中の問題)
問題の説明
Expat をカスタム C++ ラッパーと共に使用していますが、これは他のプロジェクトで既にテスト済みです。元のデータ (c_str) が正しい方法で std::string に変換されていないため、問題が発生しています。ラッパーのソースを変更していないので、これは気になります。
この変換後、文字列が null で終わる文字を取得するようです。
どうすればこれを修正できますか?
独自の外国人ラッパー
カスタムパーサー
expat ラッパー内の文字データ (char*)
パーサー内の文字データ (std::string)
c++ - 文字列の配列を使う: ポインタの配列 - 多次元配列のようなものですか?
私は最近ダミーのために C++ を読んでいますが、タイトルが間違っているか、彼らは私を当てにしていませんでした。文字列でポインターの配列を利用することに関するセクションでは、私が完全に困惑し、どこに向かうべきかわからない関数を示しています。
まず (主な質問ではありませんが)、戻り値の型がポインターである理由と、範囲外にならずに pszMonths を返す方法がわかりません。この本とオンラインでそれについて読んだことがありますが、この例ではわかりません。
私が持っている主な質問は、「これはどのように機能するのですか?!?!」です。ポインターの配列を作成して実際に初期化する方法がわかりません。私の記憶が正しければ、数値データ型でこれを行うことはできません。「ポインターの配列」内の各ポインターは、単語を構成する個々の文字を含む配列自体のようなものですか? このすべてが私の心を揺さぶるだけです。
8 月 20 日 - 私の混乱が実際にどこから生じているのかについて、私を助けようとしている人々によって混乱しているように思われるので、私はそれをよりよく説明しようとします. 特に私が懸念しているコードのセクションは次のとおりです。
ポインターを作成すると、それを別の所定の値にしか割り当てることができないと思いました。ポインターの配列のように見えるもの(ここで本を参照)が月の名前を初期化することに混乱しています。ポインターが実際に値を初期化できるとは思いませんでした。配列は動的にメモリを割り当てていますか? 「無効」は本質的に「新しい文字」と同等です。ステートメントまたは同様のもの?
質問に答えてくれた場合に備えて投稿を読み直しますが、最初は理解できませんでした。
c - puts関数がC++のソケットからの入力文字で機能しないのはなぜですか?
これは、ログインマネージャを実行しているサーバーのコードであり、悪意のあるアクセスをファイルにログインし、間違ったログインの結果を出力します。chars userとpassは、ソケットを使用したユーザー入力から取得されます。
問題は、出力コンソールとログファイルの両方での出力です。
このような:
なぜ奇妙な子嚢文字があるのですか?新しい行はソケットによるユーザー入力から来るので、どうすれば回避できますか?
c - nullで終了していない文字列の場合はstrstr()
Cでカウントされた文字列(つまり、 nullで終了していない)と同等のインプレースを行うにはどうすればよいですか?strstr()
matlab - 'fscanf'を使用してMATLABのシリアルラインからデータを読み取るときにゼロを解釈する
Arduinoボードからシリアルラインを介して入ってくるデータのストリームがあります。ストリームは次のようになります。
最初の2バイト(0x43および0x03)は、シングルバイト整数値です。次の2バイト(0x39および0x00)は、単一の16ビットリトルエンディアン符号付き整数値です。最後の2バイト(0x10と0x13)は、ターミネータシーケンス( "\ r \ n")であると想定されています。
このデータを読み込むためにMATLABを使用しています。シリアル接続を作成して開き、データを読み込みます。残念ながら、fscanfは0x00を文字列のヌルターミネータと見なすだけなので、バイト値として0x00を使用する際に問題が発生します。
サンプルコードは次のとおりです。
残念ながら、「integerByteChars」は、私が望む2要素の配列ではなく、fscanf
0x00をnullで終了する文字列値と見なすため、1要素の配列になります。ただし、文字列に使用される「%s」ではなく「%c」を使用してデータを入力しているため、これには驚かされます。
私が必要としているのは、ゼロバイトであってもこれらのバイトをデータとして読み取り、破棄しない関数です。それを行うために私が利用できる機能は何ですか?fscanfに強制的にそうさせることはできますか?
c++ - char配列がnull文字で終了する必要があるのはなぜですか?
array
charがnull文字で終了する必要があるのはなぜですか?char
すべての配列にヌル文字を追加しなければならない理由はありますか?
彼らは同じように扱われるようです。
java - \0 を含む文字列が Java で奇妙な動作をする
なぜ a は b と違うのですか?
c++ - ネイティブ文字列で (_bstr_t ラッパーを使用して) BSTR を作成するときに、長さを設定するにはどうすればよいですか?
BSTR
(ラッパークラスとして使用して)を作成するとき、のコンストラクターの_bstr_t
いくつかを使用する必要があります。aはヌル文字を含む可能性のある長さのプレフィックス付き文字列であるため、指定されたネイティブ文字列のヌル終了に依存することなく、ネイティブ文字列を使用してそのような文字列を作成する可能性がなければなりません。_bstr_t
BSTR
例を挙げると:
問題は、コンストラクターが のヌル終了に依存していることですpwNativeString
。したがって、結果BSTR
は公正であり、それ以上のものでは"abc"
ありません。だから私の質問は次のとおりです:特定の長さの配列へのポインタを作成して配信する方法BSTR
は? _bstr_t
次の疑似コードの例では: