我正在编写一个程序,该程序需要将cin的输入读取为字符串。当我尝试使用常规的getline(cin,str)时,它无休止地提示您输入内容,并且从没有移到下一行代码。所以我看了我的教科书,它说我可以将cin的字符串和字符串的大小以cin.getline(str,SIZE)的形式传递给getline。但是,当我这样做时,出现错误“没有重载函数getline的实例与参数列表匹配。

我四处搜寻,但发现的是有人说要使用getline(cin,str)形式,导致输入提示无限,或者建议我在包含的类中可能存在两个具有不同参数的不同getline函数,并且我需要告诉IDE使用正确的IDE(我不确定该怎么做)。

这是我在文件开头添加的内容:

#include <string>
#include <array>
#include <iostream>
#include "stdlib.h"
#include "Bank.h"   //my own class

using namespace std;

这是代码的相关部分:
        const int SIZE = 30; //holds size of cName array
        char* cName[SIZE];   //holds account name as a cstring   (I originally used a string object in the getline(cin, strObj) format, so that wasn't the issue)
        double balance;      //holds account balance

        cout << endl << "Enter an account number: ";
           cin >> num;       //(This prompt works correctly)
        cout << endl << "Enter a name for the account: ";
           cin.ignore(std::numeric_limits<std::streamsize>::max()); //clears cin's buffer so getline() does not get skipped   (This also works correctly)
           cin.getline(cName, SIZE); //name can be no more than 30 characters long   (The error shows at the period between cin and getline)

我正在使用Visual Studio C++ 2012(如果相关)

最佳答案

Visual Studio发出的此错误消息颇具误导性。实际上,对我来说,我试图从const成员函数中调用非const成员函数。

class someClass {
public:
    void LogError ( char *ptr ) {
        ptr = "Some garbage";
    }
    void someFunction ( char *ptr ) const {
        LogError ( ptr );
    }
};
int main ()
{
    someClass obj;
    return 0;
}

关于c++ - C++没有重载函数getline的实例与参数列表匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22890181/

10-16 19:36