如何在第一次运行循环时忽略代码的特定部分?

时间:2013-12-06 19:35:19

标签: c++ function io

我正在为商店里的文章写一个项目,我需要以下方面的帮助:

我已经使用元素声明了一个结构:

struct pole{
    int sifra;              // code
    string opis;            // description
    float cena;             // price
    int vlez_kol;           // qty
    int izlez_kol;          // qty
    float dan_stapka;       // 
    float iznos;            // 
    int datum;              // date
};

我的程序代码有:

for (int i = 0; i < br_artikli; i++){
    cout << "Enter the description of the product" << endl;
    vlez_artikl(artikli[i]);
}

我的功能如下:

void vlez_artikl(pole &artikli){
    do{
        cin.clear();
        cin.ignore();
        getline(cin, artikli.opis);
    }while(golemina_string(artikli.opis) >= 30);
}

golemina_string函数用于检查字符串的长度:

int golemina_string(string text){
    return text.length();
}

所以,我想知道,当用户输入字符串&gt; = 30长度时,如何让程序输出ERROR,并且在他出错之前不显示它。我尝试了几种方法,但无法管理它。所以,我想过可能会添加

cout << "Error" << endl;

在用于输入数据的函数的开头,并且在程序第一次进入函数时以某种方式忽略(不显示文本),但我还没有找到任何方法来做到这一点,任何帮助都表示赞赏。< / p>

实施例: Enter the description of the product

用户输入时:wewrfoeshfoisfhoiasohidasfdhioadfsoihadsfhioafhiodsafoihdsoaihdsf

输出error并让他选择一个新号码。

1 个答案:

答案 0 :(得分:1)

这样的事情:

void vlez_artikl(pole &artikli){
    for(;;) {
        cin.clear();
        cin.ignore();
        getline(cin, artikli.opis);
        if (golemina_string(artikli.opis) >= 30)
           cout << "String too long, try again" << endl;
        else break;
    }
}