文字列へのアドレスがある場合
(DWORD*)PEFile->ExportTable.pNames[i];
その文字列を印刷するにはどうすればよいですか。その文字列のサイズがわからないことに注意してください
曖昧なのでちょっと解釈が難しいですが…
.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行でそれを行います。
文字列がnullで終了している場合は、次を使用できます。
std::cout << PEFile->ExportTable.pNames[i] << std::endl;
(が定義されていて、であるstd::wcout
場合に使用します。)UNICODE
pNames[i]
LPCWSTR
文字列の長さではなくnullターミネータがない場合は、問題が発生します。
これがC++ではなくCであることを真剣に考えている場合:
printf("%s", PEFile->ExportTable.pNames[i]);