我正在通过读取input.txt文件并保存out.txt文件来进行升序排序。我已经在c中完成了此操作,但是我想在c ++中使用它。 我是C ++的初学者。有人可以帮我吗?我真的很想解决这个问题。
有错误:
没有构造函数的实例与参数列表匹配(“ std :: basic_ifstream <_ELEM,_Treaits> :: get [대상_Elem = char,_Traits = std :: char_traits]”)
“在C中”
.as-console-wrapper { max-height: 100% !important; top: 0; }
“在“输入”,“输出”中有错误输入的c ++”
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
using namespace std;
void my_sort(int *number, int size);
void main(void)
{
FILE* const pFile = fopen("input.txt", "r");
if(pFile == NULL)
{
cout << "CAN'T OPEN!" << endl;
return;
}
char szBuf[256];
szBuf[sizeof(szBuf) - 1] = 0;
int iSize = 0;
while(fgets(szBuf, sizeof(szBuf) - 1, pFile))
++iSize;
int* const piNumber = new int[iSize];
rewind(pFile);
int i = 0;
while(fgets(szBuf, sizeof(szBuf) - 1, pFile))
{
const int iNumber = atoi(szBuf);
piNumber[i++] = iNumber;
}
fclose(pFile);
my_sort(piNumber, iSize);
for(int j = 0; j < iSize; j++)
{
cout << piNumber[j] << " ";
}
cout << endl;
delete[] piNumber;
}
void my_sort(int* number, int size)
{
int i = 0, j = 0, temp = 0;
for(j = 0;j < size; j++)
{
for(i = 0; i < size - 1; i++)
{
if(number[i] > number[i + 1])
{
temp = number[i];
number[i] = number[i + 1];
number[i + 1] = temp;
}
}
}
错误----->
没有构造函数的实例与参数列表匹配(“ std :: basic_ifstream <_ELEM,_Treaits> :: get [대상_Elem = char,_Traits = std :: char_traits]”)
答案 0 :(得分:1)
您传递给input.open
的模式不是字符串,就像在C语言中一样-这是一个特征。代替
input.open("input.txt", "r"); // ERROR
使用
input.open("input.txt", ios_base::in); // ERROR
对于输出文件,请使用ios_base::out
-您还需要声明output
变量,您似乎没有在任何地方使用它。您还尝试使用一些rewind
之类的函数,而不是C ++流使用C FILE
上的这些函数。