1

如果我有一个字符串地址

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

我怎样才能打印那个字符串,注意我不知道那个字符串的大小

4

3 回答 3

2

这有点难以解释,因为它模棱两可,但是......

如果 .pNames 本身是一个以 null 结尾的字符数组(c 字符串)或 C++ 字符串,只需执行以下操作:

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

如果 .pNames[i] 是一个以 null 结尾的字符数组(c-string),只需执行以下操作:

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

如果它是一个非空终止字符数组并且您不知道大小,那么您就有麻烦了。

如果您有字符数组的大小并且它不是以 null 结尾的,那么您可以迭代它并打印。 std::copy(PEFile->ExportTable.pNames[i], PEFile->ExportTable.pNames[i] + length, std::ostream_iterator<char>(std::cout, ""));会在一行中为您做到这一点。

于 2012-09-26T20:42:20.940 回答
1

如果字符串是空终止的,您可以简单地使用:

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

(使用std::wcoutifUNICODE已定义且pNames[i]LPCWSTR.)

如果既没有空终止符也没有字符串长度,那么你就完蛋了!

于 2012-09-26T20:40:51.923 回答
0

如果您认真对待这是 C 而不是 C++:

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