CString 对象相加
两个CString 对象不能直接相加这是为什么? 顺便再问一下 如何获得文本文件中一行内容的所占的字节数。
#include "stdafx.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
ifstream rf("1.txt",ios::in|ios::binary);
char buf[100];
memset(buf,0,100);
CString str,str1;
str1 = "\n";
if(!rf)
{
printf("打开失败");
return 0;
}
while(rf.getline(str.GetBuffer(0),100)/*!rf.eof()*/)
{
//rf.read(buf,sizeof(buf));
//strlen(char(&str));
//rf.read(buf,100);
//str1 = str;
//str1 = "\n";
//str1.Format("%s%s",str,str1);
//str1.Format("%s%s",str,str1);
//str1 = "\r\n";
//str1.Format("%s",str1,str);
str1 = str + str1;//断点调试 str 一直都有值 str1却一直都是空值? CString 字符串相加是怎么加的??
}
rf.close();
//printf("%s",str);
if(IDOK == (::MessageBoxA(0,str1,"test",MB_OK)))
{
return 1;
}
system("pause");
return 0;
}
[解决办法]
while(rf.getline(str.GetBuffer(0),100)/*!rf.eof()*/)
{
//rf.read(buf,sizeof(buf));
//strlen(char(&str));
//rf.read(buf,100);
//str1 = str;
//str1 = "\n";
//str1.Format("%s%s",str,str1);
//str1.Format("%s%s",str,str1);
// str1 = "\r\n";
//str1.Format("%s",str1,str);
str.ReleaseBuffer();//GetBuffer以后要ReleaseBuffer
str1 = str + str1;//断点调试 str 一直都有值 str1却一直都是空值? CString 字符串相加是怎么加的??
}
[解决办法]
CString str,str1;
str1 = "\n";
str 没赋值,
str1="";
当然没东西。
[解决办法]
使用 while(rf.getline(str.GetBuffer(0),100)/*!rf.eof()*/)
需要ReleaseBuffer()
[解决办法]
确实我试了下,加上 ReleaseBuffer 后,就可以加了。
GetBuffer()主要作用是将字符串的缓冲区长度锁定,ReleaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。
就是由于锁定了,所以加不了吧。我试过,锁定的情况下,连GetLength都得不到长度的。
[解决办法]
str1 = "\n"; 这个注释掉。
str1 = str + str1; 改为 str1.AppendFormat("%s%s",str,str1); 不知你是不是想表达这个意思?
如何获得文本文件中一行内容的所占的字节数?
ifstream 有个 gcount 返回上一次输入操作被读入的字符的数目。
[解决办法]
1楼就把楼主的问题解决了,楼主为啥不尝试下?