有如下的代码:
CString str1 = _T("");
::GetPrivateProfileString( section, key, _T(""), str1.GetBuffer(20), 20, inifile);
其中section, key和inifile都是和程序相关的。这一步执行完成之后,str1的内容是"123"。然后
CString str2 = str1;
这一步str2的内容也是"123"。然后
str2 += _T("abc");
这一步str2的内容还是"123"。而不是"123abc"。请问这是为什么?
另外,如果把str1换成char[20]就正常了。
CString str1 = _T("");
::GetPrivateProfileString( section, key, _T(""), str1.GetBuffer(20), 20, inifile);
其中section, key和inifile都是和程序相关的。这一步执行完成之后,str1的内容是"123"。然后
CString str2 = str1;
这一步str2的内容也是"123"。然后
str2 += _T("abc");
这一步str2的内容还是"123"。而不是"123abc"。请问这是为什么?
另外,如果把str1换成char[20]就正常了。
解决方案 »
- 如何获取outlook邮件内容
- 多线程中如何先停止这个线程在开始这个线程
- 一个buffer 怎么样处理最快???
- 有关socket的定义
- 一个dll中的工具栏到了别的进程中竟关联成了别的菜单
- [初学vc]如何用GetLastError得到CopyFile的错误返回值?
- 哪位高人有通过USB口读写数据的源码,求源码,不胜感激。
- 谁知道QQ在WIN2000下的运行机制!
- 找上位机软件开发
- 知道进程的 ID 或句柄 该怎么得到 进程所对应的主窗口(如果有的话) 的句柄呢????
- 救命啊!!!!!!!!!!!!!
- 请问itoa(long value, char *string, int radix )?
LPCTSTR lpAppName, // points to section name
LPCTSTR lpKeyName, // points to key name
LPCTSTR lpDefault, // points to default string
LPTSTR lpReturnedString, // points to destination buffer
DWORD nSize, // size of destination buffer
LPCTSTR lpFileName // points to initialization filename
);
只是str2 += _T("abc");这一步出现了差异
可是 "+="是CString重载了的呀?
改成:
str2 = str2 + _T("abc");
还是不行啊
后加上str1.ReleaseBuffer();
//nlength 为str1中实际数据的长度,如果是"abc",那么nlength=3;
str2 += "abc";祝你好运
最好完成上句后
调用str1.GetBufferSetLength( nlength );