我有一段代码,我试图学习如何在C++中解析。我明白了我所做的一切,但我不明白如何使用atoi(),atof(),strtod()。我知道它应该做什么,但我不明白为什么编译器不喜欢它。我关注错误的是“scores [line_count] = strtod(score);”如何使转换功能起作用?
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
#include <iomanip>
using namespace std;
int readScores(string inputFile, string name[], float scores[], int array_size)
{
//delcare variables
ifstream infile;
int line_count = 0;
string line;
string named;
float score;
char character;
int word_index;
string names[array_size];
// open input file
infile.open(inputFile);
//Check if file opens succesfully.
if(infile.fail())
{
cout << "File cannot open!!" << endl;
return -1;
}
while(getline(infile, line))
{
cout << line << endl;
// PARSING GOES HERE
word_index = 0;
for(int i=0; i < (int)line.length(); i++)
{
character = line[i];
if (character == ',')
{
names[line_count] = named;
named = "";
word_index++;
}
else
{
if(word_index == 0)
{
named += character;
}
else if (word_index == 1)
{
score += character;
cout << character << " " << endl;
}
}
}
scores[line_count] = strtod (score);
line_count++;
}
//close file
infile.close();
//return line count
return line_count;
cout << line_count << endl;
}
int main(void)
{
int array_size = 50;
string inputFile = "Test.txt";
string name [array_size];
float scores [array_size];
readScores(inputFile, name, scores, array_size);
}
“编译器不喜欢它”不是一个非常有用的描述。 – John3136
它给了我一个错误。它说,“不能将const char *转换为参数1。” – Robbie
@Robbie为什么它没有帮助?你传递'float'而不是'char *'! –