两个CString类型字符串。
CString aa,bb;aa="工程师";
bb="学生";aa=aa+bb;
如果我把aa存入数据(DAO+Access)
就会报出"内存不足"的错误。后来我做了一个测试,直接 aa="工程师"+"学生"; 再存入,错误依旧;
但是我存入的如果是 aa="工程师学生";则正常。不知道为什么,问题肯定是出在"+"这个连接符上。
但什么原因,怎么解决使终想不出办法来!因为我用的是多个CString 类型变量,最后要把它们组合在一起存入数据库。
期待高人!
CString aa,bb;aa="工程师";
bb="学生";aa=aa+bb;
如果我把aa存入数据(DAO+Access)
就会报出"内存不足"的错误。后来我做了一个测试,直接 aa="工程师"+"学生"; 再存入,错误依旧;
但是我存入的如果是 aa="工程师学生";则正常。不知道为什么,问题肯定是出在"+"这个连接符上。
但什么原因,怎么解决使终想不出办法来!因为我用的是多个CString 类型变量,最后要把它们组合在一起存入数据库。
期待高人!
第二种情况MSDN说的很清楚了,原文是:The first argument must be a CString.
//不会是这个原因。是否用到CString::GetBuffer之类的操作?
//最好贴出代码
嗯,肯定是SQL语句写错了,这种情况常见。
代码存储代码肯定不会有问题,有问题: 我存入的如果是 aa="工程师学生";就不会正常了。 把多个CString拼成1个CString后,''修饰再插入数据库
//----------------------------------
我就是想把多个CString用"+"拼成一个CString存入数据库啊,可是出错。
请提供你的代码。
//---------------------------------
代码基本上就是我描述的那样,因为这个错误就是出现在"+"这个连接符上,为什么呢?因为我直接存入的aa="工程师学生"是对的,没有错误,但我存入的aa="工程师"+"学生" 就报内存错误。aa="工程师"+"学生";
可以通过编译吗?
//---------------------------------
当然可以,不是说了有些情况能正常存入数据库么。下面我整理一下,把相关的原代码贴出来,供大家分析。
CString aa,bb;
aa="工程师";
bb="学生"; aa=aa+bb;if(m_dataSet.IsOpen())
m_dataSet.Close();
m_dataSet.Open();//此语句后开始调用数据集类m_dataSet.AddNew();...
//SetDlgItemText(IDC_EDT_RDiagnose,aa);别的地方我先往编辑框设值。下面再取,此处目的是把值显示在界面上。
GetDlgItemText(IDC_EDT_RDiagnose,m_dataSet.m_DoctorDiagnose);...
m_dataSet.Update();if(m_dataSet.IsOpen())
m_dataSet.Close();
正确的方法应该是:CString aa(_T("工程师")),bb(_T("学生")); // 构造函数会正确分配地址,而赋值语句会优化为指向常量字符串。因此后面的+操作是对常量字符串地址进行操作,会报内存错误。可以认为这是CString的一个不足,但是不正确的使用也有关系。
aa += bb;
aa += bb;
可不可以换成char,strcat.最好别写到一行。
不过Mackz 大哥总算让我明白了其中的原因,再次感谢。