C++ 程序一次运行每一行

C++ 程序一次运行每一行,c++,C++,我对编程有点陌生,很难弄清楚为什么整个代码同时运行。我如何使它一次只问用户一件事?我肯定这很简单,但我一定是忘了。谢谢 #include<iostream> using namespace std; int main() { int length; int width; int height; int numberCoats; int squareFeet; int name; int paintNeeded;

我对编程有点陌生,很难弄清楚为什么整个代码同时运行。我如何使它一次只问用户一件事?我肯定这很简单,但我一定是忘了。谢谢

#include<iostream>
using namespace std;

int main() 
{

    int length;  
    int width;
    int height;
    int numberCoats;
    int squareFeet;
    int name;
    int paintNeeded;
    int brushesNeeded;
    int coatsPaint;
    int gallonsPaint;

    cout << "Welcome to the program! What is your first name? \n";
    cin >> name;


    cout << name << " What is the length of the house?";
    cin >> length;


    cout << name << " What is the width of the house?";
    cin >> width;


    cout << name << " What is the height of the house?";
    cin >> height;

    cout << name << " How many coats of paint will it need?";
    cin >> coatsPaint;


    squareFeet = length * width * height;
    paintNeeded = squareFeet / 325;
    brushesNeeded = squareFeet / 1100;
    gallonsPaint = coatsPaint * paintNeeded;

    cout << name << " , the amount of square feet is " << squareFeet << endl;
    cout << name << " , the amount of coats of paint you will need is " << coatsPaint << endl;
    cout << name << " , you will need " << gallonsPaint << " of paint" << endl;
    cout << name << " , you will need " << brushesNeeded << " of brushes" << endl;

                    system("pause");
                    return 0;
}
#包括
使用名称空间std;
int main()
{
整数长度;
整数宽度;
内部高度;
国际号码;
整数平方英尺;
int名称;
需要什么;
需要内特刷;
油漆涂层;
油漆;
姓名;
库特长度;
库特宽度;
库特高度;
cout-coatsaint;
平方英尺=长度*宽度*高度;
所需油漆=平方英尺/325;
所需刷数=平方英尺/1100;
加仑油漆=涂层油漆*需要油漆;
cout当您输入(例如)
Chad
作为您的姓名时,
cin>>name
将失败,因为
name
是整数类型,而不是字符串类型

这意味着
Chad
将留在输入流中,所有其他
cin>>xx
语句也将失败(因为它们也是整数类型)

如果您将您的名字输入为
7
,您会发现它工作得很好,除了不是您的名字之外:-)

更好的解决方案是将
name
更改为
std::string
,并使用
getline()
将其读入:

#include <string>

std::string name;

getline(cin, name);
#包括
std::字符串名;
getline(cin,name);
使用
getline()
而不是
cin>
的原因是后者将停止在空白处,而前者将获得整行

换句话说,输入
Chad Morgan
仍然会遇到您当前看到的问题,因为它会接受
Chad
作为您的名字,并尝试获取
Morgan
作为您的房屋长度。

当您输入时(例如)
Chad
作为您的名字,
cin>>name
将失败,因为
name
是整数类型,而不是字符串类型

这意味着
Chad
将留在输入流中,所有其他
cin>>xx
语句也将失败(因为它们也是整数类型)

如果您将您的名字输入为
7
,您会发现它工作得很好,除了不是您的名字之外:-)

更好的解决方案是将
name
更改为
std::string
,并使用
getline()
将其读入:

#include <string>

std::string name;

getline(cin, name);
#包括
std::字符串名;
getline(cin,name);
使用
getline()
而不是
cin>
的原因是后者将停止在空白处,而前者将获得整行


换句话说,输入
Chad Morgan
仍然会有你目前看到的问题,因为它会接受
Chad
作为你的名字,并试图获得
Morgan
作为你的房子长度。

name
是一个
int
。听起来不对。你是在为
name
输入字符串吗?好猫查德,你说得对,我会马上解决的。因此,如果你在头脑中使用你需要的字符串
#包含
,我很讨厌忘记这样的基本事情,谢谢你抓住了。查德,我只想说几点:1)把一个问题改成一个根本不同的问题,特别是一个已经不存在的问题,这不是一个好主意问题:-和2)一旦你的问题被解决了,正确的事情是把你认为有用的答案都推到最好,而不是只在它被解决的问题中加上一个注释。<代码>名称<代码>是一个<代码> INT/COD>。这听起来不对。你是否输入了一个用于<代码>名称>代码>的字符串?啊,好的,你是正确,我会马上解决的。因此,如果你使用字符串,你需要
#将
包含在你的头脑中。我讨厌忘记这样的基本事情,谢谢你抓住了。查德,我有几个要点:1)把一个问题改成一个根本不同的问题不是一个好主意,尤其是不再有问题的问题当你的问题得到解决后,正确的做法是把你认为有用的回答都接受,并接受最好的答案,而不只是在问题中加上一个注释。谢谢你的详细解释。我真的很感激。这个程序现在就像一个魅力。GETLIN很有意义,我将开始使用它。也许它会掩盖这样愚蠢的错误:)。@Chad已经详细阐述了为什么更喜欢
getline(cin,somestring)
over
cin>>somestring
。感谢您对其进行扩展。感谢您的详细解释。我真的很感激。该程序现在运行得很好。getline很有意义,我将开始使用它,也许它会掩盖以下愚蠢的错误:)。@Chad,已经详细介绍了选择
getline的原因(cin,somestring)
over
cin>>somestring
。感谢您对其进行扩展。