没有用于调用'fscanf'的匹配函数

时间:2014-03-10 01:16:51

标签: c++ scanf

我正试图从文件中读取时间,例如(12:00 A) 我需要阅读这三个部分。这就是我所拥有的。

#include <iostream>
#include <fstream>
#include <stdio.h>
using namespace std;

int main()
{
    string name, filename;
    ifstream inputFile;

    cout << "What is the name of the file to be provessed ";
    cin >> filename;
    inputFile.open(filename.c_str());

    getline(inputFile, name);
    fscanf (inputFile, "%d:%d %c", &startH, &startM, &startAP);
    fscanf (inputFile, "%d:%d %c", &endH, &endM, &endAP);
    inputFile >> payRate;

我从标题中得到错误,我不确定我做错了什么。

1 个答案:

答案 0 :(得分:3)

函数fscanf是一个标准的C函数,它在头文件<cstdio>中以下面的方式声明(我将在C中的头文件<stdio.h>中显示该函数是如何声明的,实际上是相同的除了关键字restrict之外的声明在C ++中使用)

int fscanf(FILE * restrict stream,
const char * restrict format, ...);

如您所见,没有std::ifstream

类型的参数

因此,编译器发出错误,因为它无法找到名为fscanf的函数,该函数具有std :: ifstream类型的第一个参数,同时它无法隐式转换std::ifstream类型的对象指向FILE *

类型的指针

您不应将C ++流功能与C流功能混合使用。