首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么getline如此不一致?

为什么getline如此不一致?
EN

Stack Overflow用户
提问于 2012-09-19 08:19:26
回答 1查看 151关注 0票数 5

我在计算机实验室,没有一个老师能弄清楚为什么我的getline不能正常工作。它没有正确存储信息(仅存储1或2个字母)。有人知道为什么会这样吗?

代码语言:javascript
运行
复制
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++;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-19 08:36:13

std::istream::ignore (即cin.ignore())的第一个参数是要丢弃的字符数。'\n'的值具有ASCII码10,因此'\n'将被隐式转换为整数(最有可能是10,但如果使用不同的编码,它可能会有所不同- EBCDIC使用21),这就是忽略的字符数,留下一些剩余的字符。

你真正想要的是丢弃最大可能的数字,直到你找到一个换行符:

代码语言:javascript
运行
复制
#include <limits> //for numeric_limtis
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12486900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档