我正在寫一個程序,需要從cin讀取輸入到一個字符串。當我嘗試使用常規getline(cin,str)時,它無休止地提示輸入,並且從未移動到下一行代碼中。所以我看了看我的教科書,並且說我可以以cin.getline(str,SIZE)的形式將字符串和字符串的大小傳遞給getline。然而,當我這樣做時,我得到的錯誤「重載函數getline沒有實例匹配參數列表。C++沒有重載的函數getline的實例匹配參數列表
我搜索了周圍,但我發現是人們說使用getline(cin,str)形式導致無限的輸入提示,或者建議在包含的類中可能有兩個不同的getline函數,並且我需要告訴IDE使用正確的(我不知道該怎麼做。)
這是我包括我的文件的開頭:
#include <string>
#include <array>
#include <iostream>
#include "stdlib.h"
#include "Bank.h" //my own class
using namespace std;
這是鱈魚的相關章節E:
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,如果是相關
你可以避免大小問題,只要去'string cName; getline(cin,cName);'。如果您遇到問題,請發佈導致問題的代碼。 –
@Matt McNabb本來我有'string name;和getline(cin,name);'和其餘的代碼是相同的,減去char數組和大小常量。但是這導致程序無限地提示輸入,無論我輸入多少個字符或按下多少次輸入都不會結束。任何想法可能會造成這種情況? – daphApple
此代碼中沒有循環,因此它不能「無限」地提示輸入。 –