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

标签 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();
}

所以,我想知道,当用户输入长度 >= 30 的字符串时,如何让程序输出 ERROR,并且在他出错之前不显示它。我尝试了几种方法,但无法解决。所以,我想也许添加

cout << "Error" << endl;

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

例子: 输入产品描述

当用户输入:wewrfoeshfoisfhoiasohidasfdhioadfsoihadsfhioafhiodsafoihdsoaihdsf

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

最佳答案

像这样:

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;
    }
}

关于c++ - 第一次运行循环时如何忽略代码的特定部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20432125/

相关文章:

c++ - 有什么正当理由不使用公共(public)虚拟方法吗?

c++ - array placement new 结合_aligned_malloc,删除的正确方法是什么?

javascript - (为什么)使用类似 jQuery 的选择器并执行其中一个方法比查找命名函数更快?

c++ - libnetfilter_queue 中没有 NF_REJECT 判定

C++ 可预测的 Rand() 输出

c - 在 linux 下,c 函数有疯狂的行为

javascript - 从其函数外部调用返回的函数

c - 将空文件重定向为 C 中的输入

java - 解析/保存/缓存多个文件时减少 Java 内存使用

c++ - 错误无效的用户定义转换