1

文字列へのアドレスがある場合

(DWORD*)PEFile->ExportTable.pNames[i];

その文字列を印刷するにはどうすればよいですか。その文字列のサイズがわからないことに注意してください

4

3 に答える 3

2

曖昧なのでちょっと解釈が難しいですが…

.pNames 自体が null で終わる文字配列 (c-string) または C++ 文字列である場合は、次のようにします。

std::cout << (DWORD*)PEFile->ExportTable.pNames;

.pNames[i] が null で終わる文字配列 (c-string) の場合は、次のようにします。

std::cout << (DWORD*)PEFile->ExportTable.pNames[i];

null 以外の終了文字配列で、サイズがわからない場合は、問題が発生します。

文字配列のサイズがあり、null で終了していない場合は、それを繰り返し処理して印刷できます。 std::copy(PEFile->ExportTable.pNames[i], PEFile->ExportTable.pNames[i] + length, std::ostream_iterator<char>(std::cout, ""));1行でそれを行います。

于 2012-09-26T20:42:20.940 に答える
1

文字列がnullで終了している場合は、次を使用できます。

std::cout << PEFile->ExportTable.pNames[i] << std::endl;

(が定義されていて、であるstd::wcout場合に使用します。)UNICODEpNames[i]LPCWSTR

文字列の長さではなくnullターミネータがない場合は、問題が発生します。

于 2012-09-26T20:40:51.923 に答える
0

これがC++ではなくCであることを真剣に考えている場合:

printf("%s", PEFile->ExportTable.pNames[i]);
于 2012-09-26T21:08:34.613 に答える