#include <iostream>
#include <afx.h>
using namespace std;
void main()
{
CString str1, str2, str3;
str1="0123456";
str2="789";
str1+=str2;
cout<<str1;
}
今天发现一个奇怪的问题,上面的代码当用USING MFC IN A SHARED DLL编译时有没有错误,而选USING MFC IN A STATIC LIBRARY 时有两个错误,更奇怪的是当用USING MFC IN A SHARED DLL编译时有没有错误,运行却输出了:0038413C,但是走读代码的时候看到str1的值是:0123456789,但是输出的却是:0038413C。
我用的是VC6.0,请问一下这是怎么回事呀??谢谢.....
#include <afx.h>
using namespace std;
void main()
{
CString str1, str2, str3;
str1="0123456";
str2="789";
str1+=str2;
cout<<str1;
}
今天发现一个奇怪的问题,上面的代码当用USING MFC IN A SHARED DLL编译时有没有错误,而选USING MFC IN A STATIC LIBRARY 时有两个错误,更奇怪的是当用USING MFC IN A SHARED DLL编译时有没有错误,运行却输出了:0038413C,但是走读代码的时候看到str1的值是:0123456789,但是输出的却是:0038413C。
我用的是VC6.0,请问一下这是怎么回事呀??谢谢.....
解决方案 »
- directshow设备参数 设定不成功
- VC 线程的问题
- 如何给NTFS的目录添加USER用户组的完全控制权限
- 一个简单的问题:如何在画图(圆)的时候....
- 怎么建一个关于radio button或者check box控件对应的类啊
- vc安装问题(无法创建DCOM用户)
- 请问如果给edit控件设置成float类型,那么如何判断是否为空?我知道设置成CString 用IsEmpty()来判断,float就不知道了。请指教。
- 我在ResourceView在新建了一ToolBar,我不想编辑图片,我如何将现有图片加入ResourceView中建的ToolBar中呢?
- 在form上画了一个editbox,如何得到editbox与form的四周边界的距离??
- 关于dll的几个纠结问题
- 求文件打包程序的设计思路,类似rar但不要求压缩
- 用Bresenham算法画直线(高手指教,有要求)
但是我知道要远离VC6
--->
cout<<(LPCTSTR)str1;
#include <iostream>
using namespace std;
void main()
{
CString str1, str2 ;
str1="0123456";
str2="789";
str1+=str2;
cout<<(LPCTSTR)str1;//类型转换
}
调试时发现cout那里没有强制转换的话,会调用cout的这个版本:
_Myt& operator<<(const void *_X)
可见输出的只是地址,但是我也不知道为什么会这样。
看了下VC6的AFX.H和AFX.INL文件,发现CString只有一个protected成员LPTSTR m_pchData;
看样子好像每个CString对象的前面会储存一个CStringData对象,用于保存CString的引用计数等;
奇怪的是CStringData不是CString的成员。CStringData的定义如下:
struct CStringData
{
long nRefs; // reference count
int nDataLength; // length of data (including terminator)
int nAllocLength; // length of allocation
// TCHAR data[nAllocLength] TCHAR* data() // TCHAR* to managed data
{ return (TCHAR*)(this+1); }
};