• 利用MFC里面格式化函数也可以实现可变长度的问题


    直接粘代码:

       1:      CString str1;  //定义两个MFC里面的CString里面的字符串
       2:      CString str2;
       3:      str1.Format("(%d)",matrix.Num);   //将str1格式化为此种结构,这句话等于 str1 = “变量”。用他来将某个数据类型转换为字符串类型。
    //和那种 IntToString()有几分相似。
       4:      str2 = str2 + str1; 
       5:      for(int i = 0; i < obs ;i++)
       6:      {
       7:          str1.Format("(%d,%d)",matrix.point[i].x,matrix.point[i].y);
       8:          str2 = str2 + str1;           //将str1连接到str2的后面。 此中的  +   为连接符。
       9:      }
      10:      //str2 = str2 + "end";
             //首先这个GetBuffer主要用来把CString对象的字符串转c类型的字符串用的,CString对象中有一个缓冲区,GetBuffer返回的应该是它的一份拷贝,而你需要为这份拷贝设置一个最小长度。
      11:      string str_war(str2.GetBuffer(str2.GetLength())); //将MFC里面的CString字符串转为C语言里面的字符串。string  str_war(),这个是定义并赋值的意思。 注意这两者的定义,CString str1,str2;   一个是string  str_war();这个也是声明并定义的意思。
      12:      char* buf=(char*)malloc(10000);   //buf是指针,但我们可以指定其大小。    
      13:      memset(buf,0,10000);            //开辟空间,赋值为0.这两句其实就是定义了一个字符型数组。
      14:      memcpy(buf,str_war.c_str(),str_war.size()); //c_str()是string类的一个成员函数, 返回常量char *类型的C风格字符串。其实按这种方法也可以实现变长的问题。   buf定义了很大,但我们并没有将它全部发送过去。这个一定要清楚明白,下面sendto函数中会有体现。
     
    下面是udp发送函数 iSend=sendto(sClient,buf,str_war.size(),0,(struct sockaddr*)&ser,iLen);//在这里我们可以指定buf的长度,这个很重要。 UDP接收端,收到的数据如下图所示: 第一个表示非零点的个数。其他的表示各个点的x与y坐标。
    
    

    image

  • 相关阅读:
    OCP 071中文考试题库(cuug整理)第25题
    OCP 071中文考试题库(cuug整理)第24题
    OCP 071中文考试题库(cuug整理)第23题
    OCP 071中文考试题库(cuug内部资料)第22题
    Oracle OCP 071【中文】考试题库-第21题
    Oracle OCP 071【中文】考试题库-第20题
    Oracle OCP 071【中文】考试题库-第18题
    Oracle OCP 071中文考试题库-第11题
    接口与实现
    solr学习0
  • 原文地址:https://www.cnblogs.com/zhuxuekui/p/3517727.html
Copyright © 2020-2023  润新知