Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 读取txt文件并将排序后的列表写入新的文本文件程序崩溃_C++_File_Runtime Error_Mergesort - Fatal编程技术网

C++ 读取txt文件并将排序后的列表写入新的文本文件程序崩溃

C++ 读取txt文件并将排序后的列表写入新的文本文件程序崩溃,c++,file,runtime-error,mergesort,C++,File,Runtime Error,Mergesort,以下是我的课程和代码: MergeSort.cpp #include "MergeSort.h" #include <iostream> #include <fstream> #include <sstream> #include <string> #include <stdlib.h> using std::cout; using std::ifstream; using std::string; void MergeSort:

以下是我的课程和代码:

MergeSort.cpp

#include "MergeSort.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <stdlib.h>

using std::cout;
using std::ifstream;
using std::string;


void MergeSort::mergeIt(int* input, int first, int last)
{
    int mid = (first + last) / 2;
    int i1 = 0;
    int i2 = first;
    int i3 = mid + 1;

    int temp[last-first+1];

    while ( i2 <= mid && i3 <= last )
        if ( input[i2] < input[i3] )
            temp[i1++] = input[i2++];
        else
            temp[i1++] = input[i3++];

    while ( i2 <= mid )
        temp[i1++] = input[i2++];

while ( i3 <= last )
    temp[i1++] = input[i3++];

    for ( int i = first; i <= last; i++ )
        input[i] = temp[i-first];
}

void MergeSort::mergeSortIt(int* input, int first, int last)
{
    if ( first < last )
    {
        int mid = (first + last) / 2;
        mergeSortIt(input, first, mid);
        mergeSortIt(input, mid + 1, last);
        mergeIt(input, first, last);
    }
}
#包括“MergeSort.h”
#包括
#包括
#包括
#包括
#包括
使用std::cout;
使用std::ifstream;
使用std::string;
void MergeSort::mergeIt(int*input,int first,int last)
{
int mid=(第一个+最后一个)/2;
int i1=0;
int i2=第一;
int i3=mid+1;
内部温度[最后一个+1];

while(i2不,我们无法调试您的代码。这取决于您自己。一旦您运行了调试器,并找到了它崩溃的行,您可以返回并再次询问您是否不明白为什么会出现错误。使用
while(!eof())
,使用
new[]
而不是标准容器,使用错误的
delete
。这应该可以让您开始。
a[i]+“\n”
也不好。如果我们有输入数据和运行它的命令,这会有所帮助。您需要对数组使用
delete[]
#include "MergeSort.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>

using std::string;
using std::cin;
using std::cout;
using std::fstream;
using std::ifstream;
using std::ofstream;

int main() {
    string input, output;
    cout << "The name of the input file?";
    cin >> input;
    cout << "The name of the output file?";
    cin >> output;

    int sizeOfArray = 25000000;

    //int inputArray[sizeOfArray];
    int *A = new int[sizeOfArray];

    ifstream myReadFile;
    myReadFile.open(input.c_str());

    if (myReadFile.fail()) {
        cout << "Error reading";
    }


    int k = 0;
    if (myReadFile.is_open()) {
        while (!myReadFile.eof()) {
         myReadFile >> A[k];
        k++;
        }
    }
    myReadFile.close();



    MergeSort m;
    m.mergeSortIt(A,0,sizeOfArray-1);


    ofstream outFile;
    outFile.open(output.c_str());

    if (outFile.fail()) {
        cout << "Error writing";
    }

    for( int i = 0; i < sizeOfArray; i++) {
        outFile << A[i] + "\n";
    }

    outFile.close();

    delete A;

}