【问题标题】:What does someone mean when they write something to "gobble a newline"? C++ [duplicate]当某人写一些东西来“吞噬换行符”时,他们是什么意思? C++ [重复]
【发布时间】:2021-12-05 05:22:53
【问题描述】:

我目前正在学习如何编写代码,提示用户在骰子游戏中定义他们想要的玩家数量和回合数,另外的目标是将两者的结果输出到文件中。我看到的一些资源在定义字符串变量时建议,您需要一个辅助字符串,其唯一目的是“吞噬换行符”。

这是我正在查看的代码的 sn-p:

int main()
{
    int nPlayers, nRounds, score;
    **string name, dummy;**
    cout <<"Enter number of players: ";
    cin >> nPlayers;
    cout << "Enter number of rounds: ";
    cin >> nRounds;
    **getline (cin, dummy); // gobble up newline**
    ofstream ofs ("scores.txt");
    ofs << nPlayers << " " << nRounds << endl;

我的问题是基于用双星号表示的两条线。为什么要写这样的字符串?

【问题讨论】:

  • 因为否则它不会被消耗,如果有下一个循环,下一个循环将获取它而不是下一个值。
  • 这意味着将输入末尾的额外换行符显式读取到虚拟中。狼吞虎咽 = 吃掉然后让它消失,所以它不是技术或 C++ 词,只是人类语言:)
  • @PepijnKramer:谢谢你们的回复。我觉得有点傻,我没有意识到它是多么直截了当和字面意思。出于某种原因,我认为 gobble 是一个常用过程或其他东西的俚语,因为它是一个如此罕见的词,并且在三个不同的领域中看到它用于描述同一事物?是的,我绝对想仔细检查一下。谢谢你们的意见!

标签: c++ arrays string newline


【解决方案1】:

许多输入流在输入之间有额外的换行符。 “Gobble up a newline”是为了摆脱那些以获得正确的输出。

例如:

5 //number of inputs
//empty newline character
89 //first input value
...

虚拟变量用于存储它,因为存储换行符没有多大用处。

【讨论】:

  • 我觉得有点傻,我以为gobble是指一个特殊的过程什么的。我并没有意识到它的字面意思是它所说的。感谢您对此事的回答,绝对解决了!
猜你喜欢
  • 2012-01-22
  • 2023-03-27
  • 2017-09-13
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 2010-09-10
相关资源
最近更新 更多