我正在写一个程序,需要把cin的输入读入字符串。当我尝试使用常规的getline(cin,str)它不停地提示输入,而且从来没有移动到下一行代码,所以我看了一下我的教科书,它说我可以将一个cstring和字符串的大小以cin.getline的形式传递给getline(str,SIZE)。然而,当我这样做时,我得到了错误“重载函数getline的示例与参数列表不匹配。
我四处寻找,但我发现的都是人们说要使用getline(cin,str)形式,这导致了无限的输入提示,或者建议在我包含的类中可能有两个不同的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(如果相关)
3条答案
按热度按时间kqlmhetl1#
这是一个错误的行:
你真正需要的是:
然后,您应该能够用途:
0wi1tuuw2#
这个来自visual studio的错误消息是相当误导的。实际上对我来说,我是在试图从const成员函数调用一个非const成员函数。
czq61nw13#
与R Sahu的答案相关,编译器给出了参数不匹配的线索。尝试下面的代码,它不会给出错误,并使错误信息更清楚。
输出为: