VC++6.0/Visual C++ 6.0与Microsoft Visual Studio.Net 2005/2008的区别

zhangwuji154 2010-03-10 11:30:48
CString str = "aadfd";
TRACE1("%s", str);
VC++6.0/Visual C++ 6.0可以
Microsoft Visual Studio.Net 2005/2008出错
前头加(LPCTSTR)也不行

当然,我知道用GetBuffer什么的取出来。

在这里只是想说一下这个差异,可能是由于CString底层实现不一样,原来那个末尾有个空字符,
现在这个可能没有,而用另一个int iLength标识这个字符有多长。

经常有人说VC++6.0/Visual C++ 6.0和Microsoft Visual Studio.Net 2005/2008没什么区别,其实用多了,区别还是蛮多的。
...全文
558 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangwuji154 2010-03-10
  • 打赏
  • 举报
回复
搜索关键词
String too long or IO Error
zhangwuji154 2010-03-10
  • 打赏
  • 举报
回复
http://www.qqgb.com/Program/VC/VCJQ/Program_167491.html
这个问题很多人遇到了,却没人能回答,可悲呀
IranCyberArmy 2010-03-10
  • 打赏
  • 举报
回复
http://www.khgl.cn/html/35/n-93935.html
zhangwuji154 2010-03-10
  • 打赏
  • 举报
回复
不要让我"名字:%s X:%.3f\n"这个东西加_T,因为这个宏里面已经有了,加了反而错,而且我
TRACE2("X:%.3f EX: %.3f\n", (*it)->X, ((TLoc7ParasData*)(*it))->Ex);
这样,只要是跟string没关的,都没有错。
zhangwuji154 2010-03-10
  • 打赏
  • 举报
回复
这回真的无语了
TCHAR ss[100];
wcscpy(ss, (*it)->strName.GetBuffer());
ss[99]=0;
TRACE2("名字:%s X:%.3f\n", (LPCTSTR)ss, (*it)->X);

跟踪断点,wcscpy(ss, (*it)->strName.GetBuffer());这句已经把内容复制过来了。
我就怕行尾没有结束符,ss[99]=0;自己添加个。
可一运行过TRACE2,还是说tring too long or IO ErrorThe program

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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