Cstring.Format出错

艳艳lisa 2017-02-24 03:15:21

Class TCC
{
Cstring str;
}

void fun ( TCC *tcc)
{
tcc.str="";
}




运行到函数中赋值出错 ,
调用堆栈显示 CSimpleString:: setstring 出错。
...全文
243 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
艳艳lisa 2017-02-27
  • 打赏
  • 举报
回复
谢谢各位 具体代码拷不过来 我后来换了台电脑同样是vs2010,同样的代码没有报错。 可能是工程设置的问题,但是我检查了一下没有找到。 最后原来电脑上用其他方式跳过了 类中Cstring成员的Format。
worldy 2017-02-27
  • 打赏
  • 举报
回复
指针参数一般应该使用->访问其成员
Pingo520 2017-02-27
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
Cstring 和 CString 不是一回事。
赵老师看的仔细,CString 和Cstring不是一回事,这个Cstring是自己定义的吗
zgl7903 2017-02-24
  • 打赏
  • 举报
回复
tcc->str ? Format 出错 是不是格式化字符串写的有问题?
  • 打赏
  • 举报
回复
类成员不是这样访问的哦
lx624909677 2017-02-24
  • 打赏
  • 举报
回复
fun函数调用的代码是怎么写的?
赵4老师 2017-02-24
  • 打赏
  • 举报
回复
Cstring 和 CString 不是一回事。
struct FOLDERINFO { int fileLength; //记录文件长度 char fileName[128]; //记录文件名 char filePath[512] //记录文件路径 }; 这里需要说明一下,为什么文件名,文件路径不用CString定义,原因是这个结构体我们要发给对方的,但是由于CString长度是不丁长的,导致结构体长度不能确定,从而使程序出错. 下面就是发送方的代码,我已经省去了目录选择和遍历目录的代码: void CMyQQDlg::SendFiles() { CSocket sockClient; sockClient.Create(); //创建Socket CString ip; m_You_IP.GetWindowText(ip); //m_You_IP是IP控件的变量 sockClient.Connect(ip, 11024); // /////////////////////////////////////////////////////////////////// CString fileName; ///////////////////////这是发送方处理目录的代码,如果没有这段代码 fileName=m_fileName; //将只能发送根目录下的文件:) int a=fileName.Find(filepathone); if(a!=2) { fileName=fileName.Right(fileName.GetLength()-a-1); fileName="C:\\"+fileName; } //////////////////////////////////////////////////////////////////////////// CFile myFile; FOLDERINFO myFileInfo; if(!myFile.Open(m_fileName,CFile::modeRead|CFile::typeBinary))//m_fileName是遍历后得到的文件 return ; myFileInfo.fileLength=myFile.GetLength(); //得到文件大小 strcpy(myFileInfo.fileName,myFile.GetFileName()); //得到文件名称 strcpy(myFileInfo.filePath,m_fileName); sockClient.Send(&myFileInfo,sizeof(myFileInfo)); //发送文件信息 myFile.Seek(0,CFile::begin); char m_buf[SIZEFILE]={0}; //缓冲区 CString strError; int num=0; int temp=0; //开始发送 for(;;) { num=myFile.Read(m_buf, SIZEFILE); if(num==0) break; end=sockClient.Send(m_buf, num); temp+=end; } myFile.Close(); sockClient.Close(); return ; } 下面就是接收方的代码: int CMyQQDlg::SaveYouFiles(CSocket &recSo, SOCKADDR_IN &client) { CString fnames; CString filenamepath; static int filescount=0; CString strfileIp,strfileName,strfileLength; char filemes[512]={0};//存文件名字的 int fileLengths=0; FOLDERINFO myFileInfo; recSo.Receive(&myFileInfo,sizeof(FOLDERINFO)); fileLengths=myFileInfo.fileLength; strfileIp.Format(inet_ntoa(client.sin_addr)); strfileName.Format(myFileInfo.fileName); //得到文件名字 strfileLength.Format("%f",myFileInfo.fileLength/1024.0); filenamepath.Format(myFileInfo.filePath); //得到文件路径 int a=filenamepath.ReverseFind(_T('\\'));//这5行代码是用来得到一个例如:\AMD\Intel\ATI\ filenamepath=filenamepath.Left(a+1); //主要是用来建立目录 CString b=filenamepath; a=b.ReverseFind(_T(':')); b=b.Right(b.GetLength()-a-1); filenamepath="files"+b; //所有的文件都存在files文件夹下 CreateDirectory(filenamepath,NULL); //创建目录 strcpy(filemes,filenamepath+strfileName); char bufs[SIZEFILE]={0}; //缓冲SIZEFILE=1024 CFile fs(filemes,CFile::modeCreate|CFile::modeWrite); //存文件 int n=0; //接受的字节数 0表示结束 int temp=0; //开始接收 for(;;) { n=recSo.Receive(bufs,SIZEFILE); //接受 if(n==0) //0表示结束 break; //接受完毕 fs.Write(bufs,n); // fputs(bufs,fp); temp+=n; } fs.Close(); return 0; }

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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