c++ - 错误:没有构造函数实例与参数列表匹配
问题描述
我正在通过读取 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]" )
解决方案
您传递给的模式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++ 流。
推荐阅读
- python - Outlier removal on a variable with several rows contain NAN (I need to keep the NAN and the position of the NAN also matters)
- java - 应用程序启动方法异常 - JavaFX
- php - DB2 根据 php 脚本中的绑定参数选择和插入
- javascript - 当我在点击下载带有动态 ID 的 pdf 时,我使用 jspdf 在 pdf 中获得了相同的 highchart
- instagram - 看不到 Instagram 验证码
- c# - 我的代码不会做总和;只有矩阵的元素出现,然后什么也没有发生
- artifactory - Artifactory 清理临时文件夹
- permissions - 可以根据类型截取命令吗?
- javascript - 已应用 jquery css 但对 flex 元素不可见
- ios - 变换后的更新点