Плавающие числа C ++, Как добавить «f» в конце для каждого элемента массива - PullRequest
0 голосов
/ 30 октября 2019

Я просто открываю filename.file, сохраняю каждое плавающее число в векторных "вершинах", но они сохраняются как целые числа. Нужно правильно преобразовать все числа в плавающее. Например: от «1» до «1,00000f» или по меньшей мере от «1» до «1,0f».

/////filename.file
...
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 1.000000 1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 1.000000 -1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 1.000000
...
//////


std::vector<float> vertices;

std::ifstream file(filename); 

    std::string line;

    while (std::getline(file, line))
    {

        std::istringstream iss(line);

        std::string result;

        if (std::getline(iss, result, ' '))
        {

            if (result == "v")
            {



                while (std::getline(iss, token, ' '))
                {
                    std::istringstream iss1(token);

                    if (std::getline(iss1, word))
                    {
                        float word_float = std::stof(word);

                        //std::cout << word_float << std::endl;
                        vertices.push_back(word_float);
                    }
                }
            }
        }
    }

//Look what I got
for(std::size_t i = 0 ; i < vertices.size(); i++) {
 std::cout << vertices[i] << " ";
}

/ * Каждый элемент 1 -1 1 ...

// Но эти числа должны быть сохранены именно так

1.000000f -1.000000f 1.000000f ... * /

1 Ответ

1 голос
/ 30 октября 2019

Звучит так, будто вы хотите что-то порядка:

std::cout << std::fixed << std::setprecision(5) << value << "f";

, например:

float values[] = { 1.0f, -1.0f, 1.0f };

for (auto const &value : values)
    std::cout << std::fixed << std::setprecision(5) << value << "f\t";

Результат:

1.00000f    -1.00000f   1.00000f
...