-3

文字列(文字列)をC++の関数に送信すると、関数はchar型のポインタでそれを受け取ります。しかし、ポインターを増やして各文字に到達すると、19 文字目の後に文字列から外れ、プログラム内の別の場所を指します。ここに私が送信している文字列があります:

\xe1\x0c\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x06google\x03com\x00\x00\x01\x00\x01

ここに私のコードがあります:

char* request_process(char *request)
{
     for (int j = 0; j< 27; j++)
     {
        cout << (request[j] << 0) << "\n";
     }
 .
 .
 .    
 }

「グーグル」の後はうまくいきません。それで、(バイナリ)「00000011」と「c」のようにするにはどうすればよいですか?

4

1 に答える 1

1

ポインターはほぼ確実に問題ではありません。一方、coutはテキスト モードで開かれ、テキスト モードで開かれたファイルにいくつかの特別に予約された ( のような) 以外の非印刷文字を出力'\n'することは、未定義の動作です。実際には、実装はおそらく文字を通過させますが、出力デバイスにどのような影響を与えるかは誰にもわかりません.

于 2012-12-31T13:43:43.417 に答える