Я работаю над чтением массива файлов и форматирования, поэтому я могу работать с ними с другими вещами, но я застрял в начале. В нем говорится, что я не могу изменить символ char * на char, но мой токен не char *.Ошибка: неверное преобразование из 'char *' в 'char' в строках 26,36
#include <iostream>
#include <fstream>
#include <sstream>
#include <cstring>
#include <string>
#include <stdio.h>
using namespace std;
void get_input(string teams[][2]) {
string infile;
double value;
char buffer[100];
char token;
stringstream ss;
cout << "Enter the input file: ";
cin >> infile;
ifstream file;
file.open (infile.c_str());
if (file.is_open()) {
int teamcounter = 0;
while (file.getline (buffer, 100)) {
int counter = 0;
token = strtok (buffer, ",");
while (token) {
if (counter == 0) {
teams[teamcounter][counter] = token;
}
else if ((counter == 1) || (counter == 2)) {
ss << token;
ss >> value;
teams[teamcounter][counter] = value;
}
token = strtok (NULL, ",");
counter++;
}
teamcounter++;
}
file.close();
}
else {
cout << "Unable to open file";
}
for (int i = 0; i< 7; i++){
for (int j = 0; j<2;j++){
cout << teams[i][j] << " ";
}
cout << endl;
}
}
Является ли создание массива в строке, чтобы я не мог использовать для них значения float или double?
int main() {
cout << "Welcome to the football bracket game!" << endl;
string teams[7][2];
get_input(teams);
}
Мой входной формат текста, как это:
Trojans, 0.80, 0.60
Bruins, 0.20, 0.30
Bears, 0.60, 0.50
Trees, 0.50, 0.40
Ducks, 0.40, 0.80
Beavers, 0.50. 0.10
Huskies, 0.80, 0.40
Cougars, 0.10, 0.90
Вы знаете, откуда исходит ошибка? Можете ли вы показать нам? – 0x499602D2
Ну, конечно, вы не можете поместить float или double в char, но вы можете преобразовать float или double в строку, а затем сохранить это. Ошибка возникает, потому что strtok возвращает char *, и вы пытаетесь сохранить это в токере переменной char. –
Объявление токена как char * дает мне ошибку сегментации. Кроме того, если я храню числа как строку, как использовать их как float? – user3317141