C ++使用指针地址打印Char

时间:2012-09-26 20:38:25

标签: c++ c pointers

如果我的字符串地址是

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

如何打印该字符串,请注意我不知道该字符串的大小

3 个答案:

答案 0 :(得分:2)

这有点难以解释,因为它含糊不清,但是......

如果.pNames本身是以空字符结尾的字符数组(c-string)或C ++字符串,只需执行:

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

如果.pNames [i]是以空字符结尾的字符数组(c-string),只需执行:

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

如果它是一个非null的terimnated字符数组并且你不知道它的大小,那你就麻烦了。

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

答案 1 :(得分:1)

如果字符串为null-terminated,您只需使用:

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

(如果std::wcout已定义且UNICODEpNames[i],则使用LPCWSTR。)

如果既没有空终结符也没有字符串长度,那么你就搞砸了!

答案 2 :(得分:0)

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

printf("%s", PEFile->ExportTable.pNames[i]);