CString中Format的问题,转化后为(NULL)

leeboy_wang 2012-03-05 10:00:45
char st[10];
sprintf(st,"%d",0);
string a = (string) st; //将整型转化为字符串
string t_book = "book" + a; //连接字符串
//CString mfcStr = t_book.c_str(); //这一种形式的转化可以实现
CString mfcStr;
mfcStr.Format(_T("%s"),t_book); //format方式的转化无法实现
wcout << mfcStr.GetBuffer() <<endl;

输出结果为:(NULL)这是为什么?请高手指点
...全文
405 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltqin 2012-03-05
  • 打赏
  • 举报
回复
仔细研究究,还是很有意思的,涉及不少内容,如果有结果不要忘了贴出来
ltqin 2012-03-05
  • 打赏
  • 举报
回复
实际上我不太确定,Format先压入栈的是t_book对象(内存)还是地址?
如果是第一种情况:压入的是内存内容,而t_book对象的最后一个字节如果是NULL,那么mfcStr就是NULL
第二种情况:压入的是地址,如果地址指向的是t_book对象,如果t_book对象的第一个字节是0,那么mfcStr就是NULL


我想第一种情况比较靠谱,可以用windbg看看堆栈情况,VS可以看堆栈吗?
ltqin 2012-03-05
  • 打赏
  • 举报
回复
vc装源码了吗?跟踪下去看看吧
leeboy_wang 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ltqin 的回复:]
Format将t_book当作字符串处理,而t_book实际上是一个对象地址
[/Quote]

既然是地址,为什么输出的是NULL呢?能否详细讲讲
东莞某某某 2012-03-05
  • 打赏
  • 举报
回复
mfcStr.Format(_T("%s"),t_book); //format方式的转化无法实现


t_book.c_str();
ltqin 2012-03-05
  • 打赏
  • 举报
回复
Format将t_book当作字符串处理,而t_book实际上是一个对象地址
ltqin 2012-03-05
  • 打赏
  • 举报
回复
mfcStr.Format(_T("%s"),t_book.c_str())

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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