我正在编写一个程序,该程序需要将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/