一个文件中有3列,第一列是字母,char;第二和第三列都是float。要求读取文件后将这三列分别存储到三个数列或者是一个struct里面。我用的getline和istringstream,读的时候好好的,没有错,但是存储的时候需要把string形式变成char和float,那个时候我的数列输出来都是乱的。不知道为什么。求大神们指教。
这是我的程序,
struct Music
{
char Note;
float Ampli;
float Dura;
};
void readFile(Music mymusic[],string filename)
{
ifstream infile;
infile.open(filename.c_str());
if( infile.fail() )
{
cout << "Error: could not open file for reading." << endl;
return EXIT_FAILURE;
}
int count=0;
string line;
while(!infile.eof())
{
getline(infile,line);
if(!line.empty())
{ count+=1;}
}
while(!infile.eof())
{
getline(infile,line);
istringstream str(line);
string note,amplitude,duration;
getline(str,note,',');
getline(str,amplitude,',')
getline(str,duration,',')
istringstream N(note);
istringstream A(amplitude);
istringstream D(duration);
for(unsigned int i=0;i<count;++i)
{
N>>mymusic[i].Note;
A>>mymusic[i].Ampli;
D>>mymusic[i].Dura;
}
}
这是我的程序,
struct Music
{
char Note;
float Ampli;
float Dura;
};
void readFile(Music mymusic[],string filename)
{
ifstream infile;
infile.open(filename.c_str());
if( infile.fail() )
{
cout << "Error: could not open file for reading." << endl;
return EXIT_FAILURE;
}
int count=0;
string line;
while(!infile.eof())
{
getline(infile,line);
if(!line.empty())
{ count+=1;}
}
while(!infile.eof())
{
getline(infile,line);
istringstream str(line);
string note,amplitude,duration;
getline(str,note,',');
getline(str,amplitude,',')
getline(str,duration,',')
istringstream N(note);
istringstream A(amplitude);
istringstream D(duration);
for(unsigned int i=0;i<count;++i)
{
N>>mymusic[i].Note;
A>>mymusic[i].Ampli;
D>>mymusic[i].Dura;
}
}
