在C++中,在如下文件如何把数字读出来?

文件如下://说明:以//开始的行为注释//以下文字中??代表实际的数字//宿舍楼的初始层数FLOOR:10//每层的初始房间数ROOM:20//每间房的初始容量(即入住... 文件如下:
// 说明:以 // 开始的行为注释
// 以下文字中 ?? 代表实际的数字
// 宿舍楼的初始层数
FLOOR: 10
// 每层的初始房间数
ROOM: 20
// 每间房的初始容量(即入住人数)
CAPACITY: 8
// 每单位重量食物可以增加的体重
FOOD_WEIGHT: 3
// 每单位重量食物的价格
FOOD_COST: 100
// 每单位时间学习减少的体重
STUDY_WEIGHT: 1
// 每单位时间学习增加的魅力
STUDY_CHARM: 2
// 每单位时间化妆可以增加的容貌
MAKEUP_LOOKS: 1
// 每单位时间化妆消耗的金钱
MAKEUP_COST: 200
// 每单位时间运动可以增加的健康
EXERCISE_HEALTH: 2
// 每单位时间运动减少的体重
EXERCISE_WEIGHT: 1
展开
 我来答
百度网友47e26d2
2013-06-20 · 超过11用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:31.7万
展开全部

/***

数据提取

***/

#include<iostream>

#include<fstream>

#include<string>

using namespace std;

int main()

{

 system("color 1e");

   string goal,text[200];

   int i(0),i1(0),i3(1),i4(-1);

   double i2[200];

   cout<<"请将要提取数字的文件拖到此处:"<<endl;

   cin>>goal;

   ifstream f(goal.c_str());

   text[0]="不为空";

   while(!text[i].empty())

   {

    i++;

    f>>text[i];

   }

   f.close();

   /***根据你数据文件特点这段代码足以完成***///代码段1

   for(int j=1;j<i;j++)

   {

    for(int r=0;r<text[j].length();r++)

         if(text[j][r]>='0'&&text[j][r]<='9')

   {

            i2[i1]=atoi(text[j].substr(r,text[j].length()-r).c_str());

   i1++;

    break;

   }

 

   }

   /*该段更具普适性代码段2

   for(int j=1;j<i;j++)

   {

        for(int r=0;r<text[j].length();r++)

  {

   if(text[j][r]>='0'&&text[j][r]<='9'||text[j][r]=='.')

   {   

    if(i4==-1)

                i4=r;

     if((text[j][r]>='0'&&text[j][r]<='9'||text[j][r+1]=='.')&&r==text[j].length()-1)

    {

                i2[i1]=atof(text[j].substr(i4,i3).c_str());

    i3=1;

    i1++;

    i4=-1;

    continue;

    }

                if(text[j][r+1]>='0'&&text[j][r+1]<='9'||text[j][r+1]=='.')

    i3++;

   }

    else if(i4!=-1)

    {

                i2[i1]=atof(text[j].substr(i4,i3).c_str());

    i3=1;

    i1++;

    i4=-1;

    }

  }

   }

     自己调试*************/

    cout<<"从文件中提取出来的数据为:"<<endl;

    for(int j1=0;j1<i1;j1++)

    cout<<i2[j1]<<endl;

 return 0;

}


/***对于你所给数据文件的特点其实代码段1可以很好解决,程序中注释掉的代码段2为普通情况下的方法,可以直接替换代码段1且更具普适性,功能更强大***/

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式