首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于字符串处理函数,

2012-02-21 
关于字符串处理函数,请教大家!分别把以下每行的字符串赋值给STR,要求获取STR中的部分内容:0.980*1.000*1.0

关于字符串处理函数,请教大家!
分别把以下每行的字符串赋值给STR,要求获取STR中的部分内容:

0.980*1.000*1.000*0.920*1.070*0.960*0.940#0
#0
2.830*2.960*0.920*0.940#0
1.070*1.340*1.030#0
30.760*30.620#0
29.210*29.200*29.200*29.160*29.120*29.110#0
42.990#0
0.000*17.530*17.510*17.510*17.630*17.560#0
133.210*29.200*29.200




要求提取数据结果如下:


  0.98
  0.00 //如果为“#0”就做为0.00处理
  2.83
  1.07
 30.76
 29.21
 42.99
  0.00
133.21




看过一些字符串的处理函数,例如STR.SubString()、STR.Delete()等,但是由于上面的字符串比较多变,长度不一定,包含的字符也不一样,所以我就不会用了。

感谢大家指点!

[解决办法]
每行用atof转换(atof可以转换到不能转换的字符为止,符合楼主要求)

例:

mmo1和mmo2是TMemo, 先把你的这些字符串Copy到mmo1里,执行以下代码,mmo2里是你要的结果


C/C++ code
    mmo2->Clear();    for(int i=0; i<mmo1->Lines->Count; i++)    {        AnsiString s=mmo1->Lines->Strings[i];        mmo2->Lines->Add( atof(s.c_str()) );   //如果想把0显示为0.00, 可以用FormatFloat("0.00",atof(s.c_str()))    }
[解决办法]
判断也去掉,直接转换就可以
C/C++ code
AnsiString   str="0.980*1.000*1.000*0.920*1.070*0.960*0.940#0";//字符串赋值 str=FormatFloat("#0.00",atof(str.c_str()));//转换之后格式化 ShowMessage(ss);//显示0.98 

热点排行