虽然循环因为字符串而无法正常运行

时间:2016-03-19 04:31:39

标签: c++

当我将此函数调用到main中的while循环时,while循环运行第二次输入客户端名称的部分已经填充了用户第一次输入的名称。我怎么能避免这种情况。

void u_input(double &pr, string &nacl)
{
    cout<<"Enter the name of the client: "<<nacl;
    getline(cin, nacl);
    cout<<"How much is the sale price of the house";
    cin>>pr;
}

`

3 个答案:

答案 0 :(得分:1)

嗯,避免它的一种方法是在你要一个新名字时不打印它!

void u_input(double &pr, string &nacl)
{
    cout<<"Enter the name of the client: ";
    getline(cin, nacl);
    cout<<"How much is the sale price of the house";
    cin>>pr;
}

另一个简单的选择是在nacl.clear()函数的开头调用u_inputclear()成员函数会删除字符串的内容(但保留现有容量)。

答案 1 :(得分:0)

我不确定你的其他节目有多长,但我会试一试

您可以保留变量以将用户信息存储在main中,并为这两个变量构建一个数组,这样您就可以输入尽可能多的信息。 我是一个新手,但我希望这只是给你一个大致的想法。

当您再次启动程序时,您输入的信息将被删除XD

    loopControl = 1;
    char answer;

    string clientName[10];
    float price[10];
    int i = 0;

    while(loopControl =0)
    { 
     void u_input();
     cin >> clientName[i]; 
     cin >> price[i];

    i++;

    cout << "would u like to enter more information?   y/n" << endl;
    cin >> answer;

    if ( answer = 'y')
       loopControl = 0;

    else 
       loopControl = 1

    }

答案 2 :(得分:-2)

以下可以为您完成:

void u_input(double &pr,string &nacl)
{
    cout<<"Enter the name of the client: "<<endl;
    getline(cin, nacl);
    cout<<"How much is the sale price of the house";
    cin>>pr;
}