错误:没有匹配的功能?

Posted

技术标签:

【中文标题】错误:没有匹配的功能?【英文标题】:Error: No matching function? 【发布时间】:2016-05-26 23:23:48 【问题描述】:

问题是,我不断收到此错误 > 错误:没有匹配函数调用 'std::basic_ifstream::basic_ifstream(std::basic_string)'

and >error: no matching function for call to 'std::basic_ofstream::open(std::basic_string)'

我该如何解决这个问题?

#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>

using namespace std;

bool loginOn()

string username, password, un, pw;
cout << "Username > ";
cin >> username;
cout << "Password > ";
cin >> password;

ifstream read("c:\\" + username + ".txt");
getline(read, un);
getline(read, pw);

if ( un == username && pw == password)
    return true;

else
    return false;



int main()

int choice;

cout << "1: Register" << endl;
cout << "2: Login" << endl;
cout << "Your chouce > ";
cin >> choice;

if (choice == 1)

    string username, password;
    cout << "Choose username > ";
    cin >> username;
    cout << "Choose password > ";
    cin >> password;

    ofstream file;
    file.open("c:\\" + username + ".txt");
    file << username << endl << password;
    file.close();

    main();

else if (choice == 2)
    bool status = loginOn();

    if (!status)
        cout << "Wrong login information" << endl;
        system("PAUSE");
        return 0;
    
    else
        cout << "Congratulation! You've login successfully" << endl;
        system("PAUSE");
        return 1;
    


【问题讨论】:

你确定你启用了-std=c++11 试试file.open(std::string("c:\\") + username + ".txt"); @πάνταῥεῖ 如何启用它? @πάνταῥεῖ file.open(std::string("c:\\") + username + ".txt"); - 给了我另一个错误 @πάνταῥεῖ 启用 -std=c++11 已修复 【参考方案1】:

您的编译器似乎没有默认启用当前标准。在c++11标准之前std::ifstream::open()只带了const char*参数。

正如我在评论中提到的,使用 -std=c++11 编译器标志(或任何适合您的编译器的选项)启用当前标准。

【讨论】:

【参考方案2】:

fstream::open 采用 const char*,而不是字符串。在参数上调用 .c_str():

file.open(("c:\\" + username + ".txt").c_str());

http://www.cplusplus.com/reference/fstream/fstream/open/

【讨论】:

在现行标准之前,是的。 OP 的编译器错误清楚地表明现代重载的缺乏。

以上是关于错误:没有匹配的功能?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Xgboost 中的功能不匹配错误

为什么我收到以下错误:“required(..)+ loop在输入Scenario中的任何内容都不匹配:”在我的功能文件中的Background部分之后?

vba 拆分功能的类型错误和不匹配

IOS 生产发布错误:- 错误 - 证书与配置文件不匹配:默认钥匙串没有身份匹配

错误:没有匹配的调用函数

Fastlane 以错误结束 - 匹配 - 没有错误消息