这是自己开发一个简易的监控系统时的所用到的知识点.
第一个问题
在网络传输数据时可以传 int,float,doule,char, 等包括结构体类型但是除类类型外.
在调试中要常用 merry 寄存器.
应用事例: 在 send 函数中要用到 const char FAR * 类型. 它的原形
- int send (
- SOCKET s,
- const char FAR * buf,
- int len,
- int flags
- );
这个类型我们可以用一个结构体的事例来代替.
第二个问题
用 strlen 函数时要注意. 它遇到 \ 0 就结束. 所以注意若求结构体, 公用体等类型时用 sizeof 函数能得到具体大小, 若所求字段不包含 \ 0 可以用 strlen 函数. 这个 \ 0 表示数字 0.
第三个问题
怎样把一个 cstring 类型转换为 string 类型. 解决方法: 用一个用中间变量. 首先定义一个 char * 变量. 将 cstring 转换为 char * 型再将 char * 转换为 string 类型. 如 ctring cstr("sfsfsf");char *ch = (LPSTR)(LPCTSTR)cst;string str (ch);
第四个问题
把 char 数组付个 string 类时. 再将新的一个 string 类付这个 string 类却无法付值. 原因是. 是数组过大, 没有结束位使的 string 类无法得到新的 string 类的值. 解决办法是去掉数组中不存在的空间.
例如: string filename = "\\config.xml";
- string fileNamePath = "";
- // 获取文件路径
- int k=0,i1=0;
- HMODULE hModle = GetModuleHandle("ServerControlInfo.exe");
- char modelPath[256],filePath[256];
- int modelLength = GetModuleFileName(hModle,modelPath,256);
- if (!hModle)
- {
- AfxMessageBox("没有服务器需要运行的文件, 请确认!");
- return;
- }
- if (modelLength)
- {
- for (int i = modelLength ; i>= 0 ; i-- )
- {
- if (modelPath[i] == '\\')
- {
- k = i;
- break;
- }
- }
- }
- for (int i = 0 ; i < k ; i++)
- {
- if (modelPath[i] == '\\')
- {
- filePath[i1] = '\\';
- i1++;
- filePath[i1] = modelPath[i];
- }
- else
- {
- filePath[i1] = modelPath[i];
- i1++;
- }
- }
- filePath[i1] = 0; ////// 注意这个地方. 这就是问题的关键所在不付结束位. 那么后边的 filename 永远也付不了.
- fileNamePath = filePath;// 这个地方把数组转为了 string 类
- fileNamePath += filename;
来源: http://www.bubuko.com/infodetail-3085406.html