1.关于switch函数的一点注意。
如下代码:
switch(nIDEvent)
{
case1:
MoveForward(ReciveNum_U,0,0);
Draw_TeeChart_U(ReciveNum_U,0);
MoveForward(ReciveNum_U_D,CPublic::DelayTime_U,1);
Draw_TeeChart_U(ReciveNum_U_D,1);
//**************
CStringstmp;
stmp.Format(L"%d王飞",ReciveNum_U[POINT_COUNT-1]);
mListBox_U.AddString(stmp);
//**************
break;
default:break;
}
运行之后系统报错,内容如下:
error C2361: “default”标签跳过“stmp”的初始化操作。
原因:是因为switch函数中不能有变量的定义,固报错。
解决办法:将case 1的内容用大括号{}扩起来,即可。
2.用printf输出十六进制的数的时候,在数字前多了很多F.
现象描述:如十六进制数为EA,在用printf函数输出时,输出为 FFFFFFEA。
原因:见博文http://guhanjie.iteye.com/blog/1765585
解决:把输出的char型强制转换为unsigned char型即可。
3.如何删除string类型的字符串中部分字符。
如:string str1 = "D:\program\test.dat",将“.dat”删掉,换成“.avi”。
解决:
string str1 ("D:\\program\\test.dat"); //注:这里的"\\"才能在str1中识别为"\";若将"\"赋值给str1,则无法识别"\"
cout << "str1 is: \n " << str1 << endl << endl;
string str2 = str1.substr ( 0 , str1.length()-4)+".avi"; //这里的第一个参数为0,即从第0个字符开始复制;第二个参数为复制到的字符数,这里为从0复制到str1.length()-4,即最后四位不复制。
cout << "str2 is: \n" << str2 << endl << endl;
完。