错误:没有构造函数的实例与参数列表匹配

时间:2019-05-28 08:43:26

标签: c++

我正在通过读取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]”)

1 个答案:

答案 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上的这些函数。