问题描述
我无法将char *转换为CString。.最后2条打印行不打印任何内容...我需要将它作为cstring的一部分,以便能够将其传递给函数。
char result[500];
strcpy(result,"\\\\.\\pipe\\");
strcat(result,a["BLOB"][i].GetString());// just appending to "result" a string I am reading from json file..
CString temp(result);
printf("\n1-The pipeName we are looking at is %s \n",result);
printf("\n2-The pipeName we are looking at is %s \n",temp);
printf("\n3-The pipeName we are looking at is %s \n",CString(result,500));
解决方法
printf
很粗糙。将%s
与printf
一起使用将假定您传递给它的内容中的第一个指针大小的字节实际上是指向字符串的指针(也称为char*
)。
CString
可能正确,也可能不正确。在您的情况下,似乎并非如此。
要使用printf,您需要执行以下操作:
printf("\n2-The pipeName we are looking at is %s \n",temp.GetString());
否则,请停止使用printf
并使用类型安全性更高的内容,例如cout
将字符串直接构建到order
中,并在打印时使用内置到CString
的强制转换。
const char *
,
printf()
怎么知道CString
是什么?什么课?如何将CString
转换为C样式的字符串?
这按预期工作。
基于MFC / WFC还提供CString
的假设,您正在寻找的内容可能已记录在here中。