私は唯一のアドレスを参照してデバッグするとき、私はどのようにcharポインタ(C++)内のデータを印刷するのですか?
function(const char * data)
{
//how to print the data which is inside the data
}
を持っています。私が印刷すると(*データ)何も印刷されません。
私は唯一のアドレスを参照してデバッグするとき、私はどのようにcharポインタ(C++)内のデータを印刷するのですか?
function(const char * data)
{
//how to print the data which is inside the data
}
を持っています。私が印刷すると(*データ)何も印刷されません。
#include <iostream>
void function(const char * data)
{
std::cout << data;
}
std::cout << std::string(data);
これはstd :: cout <<とはどのように違いますか?データがintなので –
! ! !:ポインタがあるということは整数であることを意味します。したがって、intを出力するように要求すると、intが出力されます。 –
いいえポインタは、内部的に(多くの場合)平易な整数として表されていますが、ポインタです。 'cout << data'はそれが指し示すアドレスを出力しません**、それが指すヌル終端文字列を出力します。 'char *'は 'int'(または整数型)ではないので、' operator << 'の異なるオーバーロードを呼び出します。これはc文字列を出力する方法を知っています。 – delnan
printf("%s\n", data)
です。
'print'は標準のC++機能ではなく、デバッガの関数であれば、使用しているデバッガを指定する必要があります。 '* data'はアドレス' data'の最初の文字のみを参照します。その文字が制御文字であれば、印刷されないかもしれません。これは端末/コンソールソフトウェアによって異なります。 ASCIIZ表現の空文字列は単純に0値( '0'文字ではない)であり、おそらく有用には印刷されないことに注意してください。印刷(データ)を試みるかもしれませんが、自信を持って答えるためには、環境について十分に指定していません。 –
彼がgdbについて話しているのだろうか? –
使用しているデバッガを指定してください。 'print'コマンドからは、gdbを使用していると思います。もしそうなら、 'x'コマンドを試してください。これにより、メモリブロックの内容を印刷することができます。 – 341008