我正在编写一个程序,需要将cin的输入读入字符串。当我尝试使用常规getline(cin,str)时,它无休止地提示输入,并且从未移动到下一行代码。所以我查看了我的教科书,它说我可以将cstring和字符串的大小以cin.getline(str,SIZE)的形式传递给getline。但是,当我这样做时,我得到错误“没有重载函数getline的实例匹配参数列表。
我四处搜索,但是我发现所有人都说使用getline(cin,str)形式导致无限输入提示,或者建议在类I中可能有两个不同的getline函数和不同的参数包括,我需要告诉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,如果那是相关的
答案 0 :(得分:2)
来自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;
}
答案 1 :(得分:1)
这是违规行:
char* cName[SIZE];
你真正需要的是:
char cName[SIZE];
然后,您应该可以使用:
cin.getline(cName, SIZE);