每行读取int c ++错误需要解决方案

时间:2016-12-04 17:20:18

标签: c++

嘿伙计我需要帮助我的阅读代码似乎不能正常工作这里是代码。问题如图所示,编译器应该显示所有100万个int值,但似乎我的写入或显示代码是错误的。它显示没有像它甚至不读。 enter image description here enter image description here

#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <vector>
#include <omp.h>
#include <ctime>
#include <cstdlib>

using namespace std;

int* CreateArray( int*);
void shellSortParallel( int*, int);
void shellSortSequential(int*, int);
void InsertSort( int*, int, int, int);

int main()
{
int array_size = 1000000;
int n=0;
int* arr=new int[array_size];
ifstream fin("OUTPUT1.txt");
if(! fin)
    {
cout << "File could not be opened." << endl;
    }
else
    {
cout << "File Opened successfully!!!. Reading data from file into array" << endl;
        int data;   
        while(fin>>data)
        {
            arr[n] = data;
            n++;
        }
    cout << "Displaying Array..." << endl << endl;
    for(int i = 0; i < array_size; i++)
    {
        cout << arr[i];
    }
}
fin.close();
int length = 1000000;
double endTime = 0, startTime = 0, totalTime = 0;
double start, end;
cout << "Program is now sorting using shell sort" <<endl;
startTime = time(NULL);
start = omp_get_wtime();// Start performance timer 1 run
shellSortParallel(arr, length);//Run the algorithm
end = omp_get_wtime();// End performance timer 1 run
endTime = time(NULL);
totalTime = endTime - startTime;
cout << "This is the time it took to run.  " << totalTime << endl;// time in seconds
int stupid = 0;
cin >> stupid;
cout << "Program has completed all tasks!!" << endl;
return 0;
}

void shellSortParallel(int array[], int length)
{
int h;
int j = 0;
int temp = 0;
int i = 0;
    for(h =length/2; h > 0; h = h/2)
    {
        #pragma omp parallel for shared( array, length, h, i)  default(none)
        for( i = 0; i < h; i++)
        {
            //int ID = omp_get_thread_num();
            InsertSort(array, i, length, h);
        }
    }
}

void InsertSort(int arr[], int i, int length,  int half)
{   
//cout << ID << "   ";
int temp = 0;
int j = 0;
    for (int f = half + i; f < length; f = f + half)
    {
        j = f;
        while(j > i && arr[j-half] > arr[j])
        {
            temp = arr[j];
            arr[j] = arr[j-half];
            arr[j-half] = temp;
            j = j -half;
        }
    }
}

这是我要阅读的文件的简短版本。它是每行1到1百万之间的随机数

2377763
88764877846
281327
60
625
86
646127818
14551
2177645
32033
1826761
555173
3415445377
32430
1101

任何帮助都会非常感谢,谢谢你

1 个答案:

答案 0 :(得分:1)

通过if(fin>>data),您不仅可以测试,还可以从流中检索数据。我建议使用ifs.good()进行测试。总的来说,你可以编写这样的代码

std::ifstream fin ("OUTPUT1.txt", std::ifstream::in);
char c = fin.get();

while (fin.good()) 
{
   std::cout << c;
   c = fin.get();
}