Поскольку вы взяли строку файла в строку, вы можете преобразовать строку в вектор из полукокса и сделать обугленные * пункта этого вектора и передать обугленных * в следующая функция в качестве первого параметра:
char * strtok (char * str, const char * delimiters);
Второй параметр в вашем случае будет пустым пространством «». Полученный указатель char может быть затем преобразован в float, и каждый токен может быть сохранен в массиве!
int nums(char sentence[ ]) //function to find the number of words in a line
{
int counted = 0; // result
// state:
const char* it = sentence;
int inword = 0;
do switch(*it) {
case '\0':
case ' ': case '\t': case '\n': case '\r':
if (inword) { inword = 0; counted++; }
break;
default: inword = 1;
} while(*it++);
return counted;
}
int main()
{
ifstream file_input (input.c_str());
int row=0;
while (getline(file_input, abc))
{
vector<char> writable(abc.begin(), abc.end());
vector<char> buf(abc.begin(), abc.end());
writable.push_back('\0');
buf.push_back('\0');
char *line=&writable[0];
char *safe=&buf[0];
char* s= "123.00";
float array[100];
char *p;
int i=0;
p= strtok (line, " ");
array[i]=atof(p);
cout<<" "<<array[i];
i++;
while (i<nums(safe))
{
p = strtok (NULL, " "); //returns a pointer to the token
array[i]=atof(p);
cout<<" "<<array[i];
i++;
}
return 0;
}
К сожалению цикл: (! Р = NULL) пока не работает, и в результате ошибки сегментации, так что я должен был заранее рассчитать количество слов в строке, используя другой вектор начиная с strtok() изменяет строку, переданную как char *.