我正在为商店中的文章编写一个项目,我需要以下方面的帮助:
我已经声明了一个包含元素的结构:
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/