C++ 读取txt文件并将排序后的列表写入新的文本文件程序崩溃
以下是我的课程和代码: MergeSort.cppC++ 读取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:
#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;
}