Dav*_*zar 5 c++ string getline
我在计算机实验室,没有一个导师可以弄清楚为什么我getline的工作不正常.它没有正确存储信息(只存储1或2个字母).有谁知道为什么会这样?
void addMovie(Inventory movie[], int &count)
{
string s;
int i;
cout << "Please enter the SKU " << endl;
cin >> i;
movie[count].sku = i;
cout << "Please enter the name of the movie you wish to add " << endl;
cin.ignore('\n');
getline(cin, s, '\n');
movie[count].title = s;
count++;
}
Run Code Online (Sandbox Code Playgroud)
std::istream::ignore(即cin.ignore())第一个参数是要丢弃的字符数.其值为'\n'10,因此'\n'被隐式转换为整数(最可能是10,但如果使用不同的编码则可能会有所不同 - EBCDIC使用21),这就是忽略了多少个字符,留下剩下几个.
您真正想要的是在找到换行符之前丢弃最大可能的数字:
#include <limits> //for numeric_limtis
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Run Code Online (Sandbox Code Playgroud)