fstream читает только целые числа - PullRequest
0 голосов
/ 17 ноября 2018

Мой код работает нормально, когда файл, из которого я читаю, содержит только целые числа, но когда у меня есть плавающие в файле, он, похоже, не работает, например, если у меня есть 1.5 в файле, он будет читать только как 1, и это не будетпрочитайте любое из чисел после этого.Кто-нибудь знает, что вызывает это?Динамический массив, в котором все сохраняется, является плавающим, поэтому я не уверен, что делать в этот момент

#include <iostream>
#include <fstream>
#include <string>


float *allocateArray(std::string fileName, int &arraySize, int &counter)
{
int a = 0;
std::ifstream myReadFile;

myReadFile.open(fileName);
float *arr = new float[arraySize]{0.0};

while (myReadFile >> a)
{
    counter++;
    if(counter == arraySize)
    {
        arr[arraySize -1] = a;

    }

    else
    {
        float *tempArray = new float[arraySize +1]{0.0};
        for(int i = 0; i < arraySize; i++)
        {
            tempArray[i] = arr[i];
        }
        delete[] arr;
        arraySize++;
        arr = new float[arraySize];
        for(int x = 0; x < arraySize; x++)
        {
            arr[x] = tempArray[x]; 
        }
        arr[arraySize-1] = a;
    }

}
myReadFile.close();

return arr;
}

void output(float *arr, int arraySize,int counter)
{
float sum = 0.0;

for(int x = 0; x < arraySize; x++)
{
    sum += arr[x];
}
float average = sum/counter;
std::cout << "Output:  ";

for(int i = 0; i < arraySize; i++)
{
    if(arr[i] > average)
    {
        std::cout << arr[i] << "  ";
    }
}
}
int main()
{

int arraySize = 1;
int counter = 0;



float *arr = allocateArray("input.in", arraySize, counter);

std::cout << "Input:  ";
for(int x = 0; x < arraySize; x++)
{
    std::cout << arr[x] << "  ";
}
output(arr, arraySize, counter);




getchar();
return 0;
}
...