Преобразование строки в удвоение в переполнении стека

Я сделал функцию, которая получает строку и разделитель, разделяет строку и возвращает вектор с плавающей точкой (например, split функция в Java).
Это функция:

vector<float> extractNumbers(string line, char delimiter) {
vector<float> a;
float f;
string forNow = "";
for (unsigned int i = 0; i < line.size(); i++) {
if (line.at(i) == delimeter) {
f = ::atof(forNow.c_str());
cout << ::atof(forNow.c_str()) << endl;
a.push_back(f);
forNow = "";
} else {
forNow += line.at(i);
}
}
f = ::atof(forNow.c_str());
cout << f << endl;
a.push_back(f);
return a;
}

Это текстовый файл, с которым я пытаюсь это сделать:

3 3
1 1 1
1 2 1
1 1 1

Я называю эту функцию: vector<float> floatLine = extractNumbers(line, ' ');
Когда я пытаюсь напечатать forNow Параметр я получаю числа, как в тексте, но когда я печатаю f или же ::atof(forNow.c_str()) Я получаю 0 вместо первых 3 в первой строке.
Какие-нибудь мысли?

-1

Решение

Просто если вы не знаете о таком удобном способе взаимодействия с файлами. Вы можете использовать их так:

float a, b;
float c, d, e;
float f, g, h;
fstream file("data.dat", ios::in);
if (file) {
file >> a >> b;
file >> c >> d >> e;
file >> f >> g >> h;
file.close();
}
2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector