Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么while循环跳过char?

为什么while循环跳过char?
EN

Stack Overflow用户
提问于 2013-02-22 19:43:27
回答 2查看 117关注 0票数 0

所以我尝试设置一个while循环来不断询问(y/n),但是当我按下'y‘并输入它时,它怎么会跳过"char itemtitle“而直接跳到"double itemprice”呢?我是c++新手,请帮帮忙,我很感激

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <cstdlib>
#include <iostream>
#include <sstream>

using namespace std;

#define tax 9.99
#define shipping ("Free")

void printmessage ()
{
  cout << "*Thanks for your business! We'll ship out your item as soon as possible*\n"
              "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n";
}

int main(int argc, char** argv)
{

   cout << "Write an invoice program and print it to the console.\n";
   cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n;

   cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
           "Welcome to my Pc Store.\n"
           "'Where Technology is served right'\n"
           "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"<< endl;

   char name [256];
   cout << "Enter your full name: ";
   cin.getline (name, 256);

   char organization [256];
   cout << "What's your organization?: ";
   cin.getline (organization, 256);

   char quit = 'y';    
   do {
        char itemtitle [256];
        cout << "Enter name of Laptop you'd like to order: ";
        cin.getline (itemtitle, 256);

        double itemprice;
        cout << "Enter price of item: $";
        cin >> itemprice; 

        int quantity;
        quantity = 1;
        cout << "How many items?: ";
        cin >> quantity;

        if (quantity == 1) {     
            cout << "1 item(s)\n";  
        } else  {
           cout << quantity << " item(s)\n";
        } 

        cout << "Tax: $" << tax;

        double subtotal;
        subtotal = quantity * itemprice + tax;
        cout << "\nSub Total: $" << subtotal;

        cout << "\n";       
        cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n"
               "Validation:\n\n";

        cout << "Item(s):\t\t\t\t\t" << "Amount:\n";       
        cout << itemtitle << "\t\t\t\t\t$" << quantity * itemprice + tax; ;
        cout << "\n" << quantity << " * $" << itemprice << " + $" << tax;

        cout << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n";
        cout << "Payment (Credit/Debit only)!\n\n";

        double cardnum;
        cout << "Card Numbers: ";
        cin >> cardnum;

        int ssn;
        cout << "SSN: ";
        cin >> ssn;

        cout << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
               "Invoice Details:\n\n";

        time_t rawtime;
        struct tm * timeinfo;
        time ( &rawtime );
        timeinfo = localtime ( &rawtime );
        cout << "Date&Time: " << ("Current local time and date: %s", asctime (timeinfo));

        cout << name;
        cout << "\n" << organization;
        cout << "\n" << "("<< quantity << ")" << " " << itemtitle;

        cout << "\n\t\t\t" << "Total: $" << quantity * itemprice;
        cout << "\n\t\t\t" << "Tax: $" << tax;
        cout << "\n\t\t\t" << "Shipping: " << shipping;
        cout << "\n\n\t\t\t" << "Balance Due: $" << quantity * itemprice + tax;

        cout << "\n\t\t\t" << "Payment: " << "Paid" ;

        cout << "\n\n\nDo you want to continue shopping? (y/n): ";
        cin >> quit ;

        cout << "\n\n";

    } while (quit != 'n');

    cout << "\n\n\n";
    printmessage ();

    return 0;
}
EN

回答 2

Stack Overflow用户

发布于 2013-02-22 19:51:05

std::cin.operator>>()'\n'字符留在缓冲区中,这使得它在getline中几乎不可用。您必须选择其中之一,然后相应地更改代码。

例如,只使用getline,然后在内部解析结果字符串。

票数 2
EN

Stack Overflow用户

发布于 2013-02-22 20:05:59

当您同时使用"cin >>“和"cin.getline()”来读取用户输入时,大多数情况下都会遇到这个问题。在使用">>“运算符时,在读取输入后,'\n‘会留在输入流中,这会导致随后对"getline”的调用立即返回。

有两种解决方案。

首先,在"cin.getline(itemtitle,256);“之前添加"cin.ignore();”。"cin.ignore()“从输入序列中提取字符并丢弃它们。它将清除输入流。

其次,将"cin.getline(itemtitle,256);“替换为"cin >> itemtitle;”。我建议在代码中使用"cin.getline“或"cin >>”,但不要同时使用。"cin >>“会更好。

此外,应该将"#include < ctime >“放在代码的顶部。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15032017

复制
相关文章
while循环嵌套while循环
《代码大全》推荐先用伪代码来写框架,从最上层思考可以将抽象能力最大化,不会先陷入任何编程语言的实现细节中,通俗地说就是在蓝图层面解决问题。
不会飞的小鸟
2021/07/30
3.5K0
有了 for 循环,为什么还要 while(1)?
有读者问题了类似这样的问题:while(1) 和 for(;;)它们不都是无限循环吗,作用应该一样啊,它们到底有什么区别?
搜云库技术团队
2023/03/15
6410
有了 for 循环,为什么还要 while(1)?
While循环
While(条件)//如果条件为真则一直执行循环体中的内容 { 循环体 } 示例1 提示用户输入密码 888正确 若不正确继续输入 且只有三次重新输入的机会
用户7272142
2023/10/11
1320
while()循环
回顾一下java基础的while(true)循环,有时候实际项目中也会看到在用。本小节来梳理一下
在水一方
2022/06/14
1.5K0
while()循环
while循环与do…while循环的区别
while 先判断再执行 不满足循环条件时 一次都不会执行 do…while 先执行再判断 不管任何情况都至少执行一次
是阿超
2021/10/15
2.8K0
# C#学习 -循环结构-while循环-do ...while 循环-for循环
C#程序的三大结构 顺序结构:程序的入口都是Main函数,代码从上往下,从左往右,依次执行; 分支结构:当我们的程序执行到某个位置的时候,进行条件判断,根据判断的结果来执行不同的操作; 循环结构:在满足某个条件的时候反复执行一个语句序列(循环)。
呆呆敲代码的小Y
2021/08/12
3.2K0
【Python】循环语句 ② ( while 嵌套循环 | 代码示例 - while 嵌套循环 )
while 嵌套循环 也是基于 空格缩进 , Python 中基于 空格缩进 判定代码逻辑的层次关系 ;
韩曙亮
2023/10/11
3670
【Python】循环语句 ② ( while 嵌套循环 | 代码示例 - while 嵌套循环 )
for循环 while循环 do while循环流程图画法
1.for(表达式1;表达式2;表达式3) 2.while(条件) {循环体} 3.do {循环体} while(条件)
lexingsen
2022/02/25
1.8K0
for循环  while循环  do while循环流程图画法
While 循环语句
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。当然也可以遍历所有的字符串,列表,元祖等。 其基本形式为: while 判断条件: 执行语句…… 执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。 当判断条件假false时,循环结束。 for 循环一般是用在一个有次数的循环上。 while 循环用在有条件的控制上。 来个容易上手的例子: n = 0 ## 给n赋值初始值 0
老七Linux
2018/05/09
1.7K0
Python|While循环和For循环
pass是空语句,它的出现是为了保持程序结构的完整性。pass不做任何事情,一般用作占位符。
算法与编程之美
2020/03/12
3.8K0
while和do while循环语句
HTML5学堂:在JS的循环语句当中,for、for-in的确是使用管比较频繁的,但是额外还有两种循环语句,一种是while语句,一种是do-while语句,今天主要讲解这看两种语句,并比较一下它们与for的区别。 学过计算机都会接触到循环,循环有很多种,今天我们就来看看while和do while的区别吧 while语句 语法:while(判断条件){} while循环满足条件后执行大括号内的内容,下面我们来直接看下demo只有当达到条件时累加才会被执行 demo: var sum = 0;//声
HTML5学堂
2018/03/12
2.7K0
While 循环语句
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。当然也可以遍历所有的字符串,列表,元祖等。 其基本形式为: while 判断条件: 执行语句…… 执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。 当判断条件假false时,循环结束。 for 循环一般是用在一个有次数的循环上。 while 循环用在有条件的控制上。 来个容易上手的例子: n = 0 ## 给n赋值初始
老七Linux
2018/05/09
1.7K0
循环结构while
Note: 高能:语句结构都是由关键字开头,用冒号结束!     一:语句结构     while 判断条件:             语句 二:基本规则     (1)使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。     (2)可以通过设置条件表达式永远不为 false 来实现无限循环     (3)在 while … else 在条件语句为 false 时执行 else 的语句块 三:条件为真     不为 0, True, 'None', 字符串不为空串 四:嵌套结构 五:break和continue
py3study
2020/01/19
1.3K0
while和do while循环语句
语句的含意很简单,它告诉 PHP 只要 while 表达式的值为 TRUE就重复执行嵌套中的循环语句
老雷PHP全栈开发
2020/07/02
2K0
python while循环
经过昨天的学习,相信大家已经对python的条件判断表达式if/else有一定的了解了,那么我们今天配合昨天的课程讲解一个新概念 – while循环 。
猿说编程[Python和C]
2020/01/21
1.6K0
python while循环
Python 循环 while,for
2,如果真值表达式的测试值为True,侧执行语句1,然后再返回到第一步重复进行测试
py3study
2020/01/06
1.3K0
Python - while循环
for 循环用在有次数的循环上。 while循环用在有条件的循环上。 while循环,知道表达式为假,才退出。 while循环,表达式是一个逻辑表达式,必须返回一个True或False 语法: while expression:     statements() #!/usr/bin/python n = 0 while True:     if n == 10:         break     print n,'hello'     n += 1
py3study
2020/01/13
1.1K0
循环结构-while
(1)与for循环的循环变量作用域不同,for循环的循环变量其作用域仅限于循环体内,而while循环的循环变量作用域不局限在循环体内。
星哥玩云
2022/09/14
8300
循环结构-while
5.6 while循环
大多数的应用程序都会包含循环结构。循环结构和顺序结构、选择结构是结构化程序设计的3种基本结构,它们是各种复杂程序的基本构成单元。而且在日常生活中或是在程序所处理的问题常常需要重复处理。
小林C语言
2019/07/12
7620
Python - while 循环
Python 3 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。
AiDBA宝典
2022/02/22
1K0

相似问题

为什么程序跳过while循环

50

跳过do/while循环

116

char不终止while循环

13

为什么perl跳过状态以支持while循环?

11

为什么Java跳过While循环中的If语句?

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文