我希望程序读取int string double

时间:2017-05-07 01:20:33

标签: c++

我想要一个程序从我的txt文件中读取int string double。我想我们应该使用数组。

这是我的txt文件:

1 Nasi Ayam Penyet 8.00

2 Nasi Goreng Pattaya 9.00

3 Nasi Goreng Tom Yam 10.00

4 Nasi Goreng Kampung 8.00

5 Nasi Ayam BBQ 9.00

enter code here`
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <cctype>
#include <iomanip>
using namespace std;
int main()
{
string name[25];
string str[25];
string line; 
int first_number[25];
double num[25];
int i = 0; // to increment the variables above
ifstream infile;
infile.open("list.txt");
if(infile.is_open()) 
{
while(!infile.eof())
{
infile >> first_number[i];
getline(infile,line);
for(int k = 0; k < line.length(); k++)
 {
     if(isdigit(line[k]) || ispunct(line[k]))
         str[i] += line[k];
     else
         name[i] += line[k];
 }
num[i] = strtol(str[i].c_str(), NULL, 0);
cout << first_number[i] <<name[i];
cout <<setprecision(2)<< num[i] << endl;
i++;
 }
   infile.close();
 }
 }

1 个答案:

答案 0 :(得分:0)

string name[25];
string str[25];
string line; 
int first_number[25];
double num[25];
int i = 0; // to increment the variables above

ifstream infile;
infile.open(filename);
if(infile.is_open())
{
    while(infile >> first_number[i])
    {
        getline(infile,line);
   for(int k = 0; k < line.length(); k++)
     {
         if(isdigit(line[k]) || ispunct(line[k]))
             str[i] += line[k];
         else
             name[i] += line[k];
     }
   num[i] = strtol(str[i].c_str(), NULL, 0);
   i++;
 }
       infile.close();
 }

对于strtol使用cstdlib如果没有意义留下评论我将尽力解释它。