10

256 文字の文字配列があるかchar myArray[256]、最初のカップルだけが実際に情報を保持しています

myArray[0] = 'H';
myArray[1] = 'E';
myArray[2] = 'L';
myArray[3] = 'L';
myArray[4] = 'O';
myArray[5] = NULL;
myArray[6] = NULL;
// etc...

配列の内容を必ずしも正確に把握しているわけではありませんが、そこにあるものからヌル文字を除いたものをバッファ文字列にコピーしたいと考えています。string buffer

これを行う適切な方法は、次のようにすることだと思いました。

buffer.append(myArray);

プログラムは、ヌル文字に遭遇すると値の読み取りを停止しますが、その動作は見られません。配列全体がバッファ、null 文字、およびすべてにコピーされていることがわかります。これを行う正しい方法は何ですか?

編集:簡単にするためのいくつかの作業コード

#include <string>
#include <iostream>

using namespace std;

int main()
{
    string buffer;
    char mychararray[256] = {NULL};

    mychararray[0] = 'H';
    mychararray[1] = 'e';
    mychararray[2] = 'l';
    mychararray[3] = 'l';
    mychararray[4] = 'o';

    buffer.append(mychararray);

    cout << buffer << endl;

    return 0;
}

null を適切に初期化していないことに気付き、元の方法で動作します。ヤルの時間を無駄にしてごめんなさい。

4

2 に答える 2

11

試してみてください

buffer += myArray;

するべきです。append配列を null で終了する場合にも機能するはずです。

于 2012-11-26T04:02:08.697 に答える
2

これは仕事をするはずです:

int c;
while(myArray[c] != NULL) {
  buffer.append(1,myArray[c]);
  ++c;
}

また、次のようにする必要があります。myArray[5] = '\0'

于 2012-11-26T04:01:46.033 に答える