C++小问题解决

7 篇文章 0 订阅

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;  

完。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值