首页 > 解决方案 > 错误:没有构造函数实例与参数列表匹配

问题描述

我正在通过读取 input.txt 文件并保存 out.txt 文件来制作升序排序代码。我已经在 c 中做到了,但我想在 c++ 中使用它。我是 C++ 的初学者。有人可以帮助我吗?我真的很想解决这个问题。

有错误:

没有构造函数实例与参数列表匹配( "std::basic_ifstream<_ELEM, _Treaits>::get [대상_Elem=char, _Traits=std::char_traits]" )

“在 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;
               }
          }
     }

“c++ with ERROR IN 'input', 'output'”

#include <iostream>
#include <fstream>
using namespace std;

void mySort(int* InputArrayPointer, int InputArraySize);

void main(void)
{
    ifstream input;
    input.open("input.txt", "r"); // ERROR
    if (input.fail())
    {
        cout << "CAN'T OPEN!" << endl;
        return;
    }

    char arr[256];
    arr[sizeof(arr) - 1] = 0;
    int size = 0;
    while (input.get(arr, sizeof(arr) - 1, input)) //ERROR
    ++size;

    int* const pointer = new int[size];

    rewind(input); //ERROR

    int i = 0;
   while (input.get(arr, sizeof(arr) - 1, input)) //ERROR
    {
        const int number = atoi(arr);
        pointer[i++] = number;
    }
    input.close(); 
    mySort(pointer, size);

    output.open("output.txt", "w"); //ERROR
    for (int j = 0; j < size; j++)
    {
        output << pointer[j] << endl;
    }
    delete[] pointer;
    output.close();     
    }

void mySort(int* InputArrayPointer, int InputArraySize)
{
    int i = 0, j = 0, temp = 0;

    for (j = 0; j < InputArraySize; j++)
    {
        for (i = 0; i < InputArraySize - 1; i++)
        {
            if (InputArrayPointer[i] > InputArrayPointer[i + 1])
            {
                temp = InputArrayPointer[i];
                InputArrayPointer[i] = InputArrayPointer[i + 1];
                InputArrayPointer[i + 1] = temp;
            }
        }
    }
}

错误----->

没有构造函数实例与参数列表匹配( "std::basic_ifstream<_ELEM, _Treaits>::get [대상_Elem=char, _Traits=std::char_traits]" )

标签: c++

解决方案


您传递给的模式input.open不是字符串,就像在 C 中一样 - 它是一个特征。代替

input.open("input.txt", "r"); // ERROR

利用

input.open("input.txt", ios_base::in); // ERROR

对于输出文件,使用ios_base::out- 您还需要声明output变量,您似乎没有在任何地方这样做。您还尝试使用一些rewind在 C 上使用的函数FILE,而不是 C++ 流。


推荐阅读