0

所以我有一个结构,它的成员是 void 指针,它指向数据。我知道这是一堆字符,我知道大小(另一个成员)。我想以类似的方式打印它

for (in i = 0; i < str.size; i++)
  printf("%c", (char)str.data[i]);

根据编译器,这是错误的。我知道我必须告诉 printf 正确的大小,但我不知道如何。任何帮助表示赞赏。而且,由于我使用的是 c++,是否有更舒适的方法std::string

4

2 回答 2

1

“我有一个以 void 指针为成员的结构”

data[i]

相当于:

*(data + i)

并且您不能使用 void 指针进行指针运算。


“有没有更舒服的方法std::string?”

当然有:

char* cdata = static_cast<char*>(str.data);
std::string myStr(cdata, cdata + str.size);
std::cout << myStr;

请注意,此解决方案还将自动以空值终止字符串。

于 2013-10-15T12:42:46.110 回答
0

尝试这个:

char *array = static_cast<char *>(str.data);
for (in i = 0; i < str.size; i++)
  printf("%c", array[i]);

或带字符串:

std::string s(static_cast<char *>(str.data), str.size);
std::cout << s;

或者确保 str.data 的最后一个字符是 '\0' 并且你可以像这样打印它:

char *array = static_cast<char *>(str.data);
printf("%s", array);

编辑

修改字符串构造函数以接收输入字符数组的大小

编辑2

新的印刷方法

于 2013-10-15T12:43:03.590 回答