fstream仅读取整数

时间:2018-11-16 21:12:56

标签: c++ ifstream

当我从中读取的文件仅包含整数时,我的代码工作正常,但是当我在文件中浮动时,它似乎不起作用,例如,如果文件中包含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;
}

0 个答案:

没有答案