LPSTR已经不是char*了吧

x363635334 2013-05-14 01:55:36

typedef __nullterminated CHAR *NPSTR, *LPSTR, *PSTR;


String sFileName;
GetModuleFileNameEx(hProcess,NULL,sFileName.str(),255);//第3个参数要求LPSTR

//类String有char* str()const {return m_s;}方法返回char* 但是运行得到了乱码
//类String有operator const char*()const;自动转换但是编译不过,能转const就不能转非const吗


用普通的字符数组就正常了,求解
...全文
239 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
正确的做法是用数组,然后赋值给string;
shiter 2013-05-15
  • 打赏
  • 举报
回复
x363635334 2013-05-14
  • 打赏
  • 举报
回复
由乱码发掘出CString的一个bug,还有什么bug大家晒一晒

DWORD pid=4030; CString cs; string s;
hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
GetModuleFileNameEx(hProcess,NULL,cs.GetBuffer(),255);
GetModuleFileNameEx(hProcess,NULL,(LPSTR)s.c_str(),255);
CloseHandle(hProcess);

int len1=cs.GetLength();//len1==0了
int len2=s.length();//len2==1817994098了
纠结设计一个类打底要不要支持外部写入,将面临容量不足,长度无意义的窘境
就是那个党伟 2013-05-14
  • 打赏
  • 举报
回复
还是转定义看直观。 可以强转的说
赵4老师 2013-05-14
  • 打赏
  • 举报
回复
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
Isnis-fallen 2013-05-14
  • 打赏
  • 举报
回复
试试 LPSTR lpstr = (LPSTR)(LPCTSTR)string;

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧