本质上,我正在创建自己的字符串类,名为MyString。在这个类中有一个名为getline的函数,它的执行应该和字符串类的getline函数完全一样。
但是经过测试,当函数到达空字符或指定的分隔符时,它似乎不会退出循环,而是不断提示输入,并将该输入添加到已经存在的字符串(c-string)中。
istream& getline (istream& is, MyString& stringC, char delim){
int i = 0;
do{
is.get(stringC.stringM[i]);
i++;
if(i == stringC.Size){
stringC.Grow(1);
}
}while(is.peek() != '\0' || is.peek() != delim);
stringC.stringM[i] = '\0';
return is;
}
我已经解决了我的上一个问题,但现在我的主服务器在我最后一次getline调用后关闭。
cin >> s1;
getline(cin,s2,',');
getline(cin,s3);
//It ends here
cout << "\nNew string values:\n";
cout << "s1 = " << s1 << '\n';
cout << "s2 = " << s2 << '\n';
cout << "s3 = " << s3 << '\n';
cout << "---------------------------\n";
这是一个逻辑错误:
is.peek() != '\0' || is.peek() != delim
如果is.peek()
=='\0',那么它将不等于
Delim(除非也是'\0')如果
is.peek()==Delim
,那么它将不等于>'\0'
(再次,除非也是'\0')
您正在寻找:
is.peek() != '\0' && is.peek() != delim
如果为,则终止循环。peek()
等于'\0'
或delim
//在下面的程序中,在内部,当用户收到指令时,他可以简单地进入哨兵退出while循环,但是,当您得到希望购买的票的结果时,按999并不退出程序
如果您能帮助我完成Java类的任务,我将不胜感激。问题提示如下: 编写一个程序来读取非负整数列表并显示最大整数、最小整数和所有整数的平均值。用户通过输入一个不用于查找最大值、最小值和平均值的负哨兵值来指示输入的结束。平均值应该是双精度类型的值,以便用小数部分计算。 我在代码中遇到的问题是,运行时,循环不会完成,除非输入的第一个值为负值,在这种情况下它返回: 输入的最大数字是:0输入的最小数字是:0
这里的主要错误是do-while循环不会退出。该计划的前提是从一个行星跳到另一个行星,而planetName是目的地,current是您当前所在的行星。我想要的是当电流为“Io”时退出循环。每次“跳转”到另一个行星后,目的地即成为当前行星。我已经测试过了,当电流在 然而,循环仍在继续。
所以我这里有一个程序,它只是简单地模仿跳棋(但不是跳,而是一个棋子简单地“吃掉”另一个棋子)。我有一个简单的类,它实现了一个“checkers”类对象,并创建了一个名为“chips”的int数组变量。还有一个“while”语句,它在chip[0]和chips[1]整数大于0时创建了一个循环。看起来是这样的: Checkers类中的count方法如下所示: 板是8 x 8(这就是board.leng
问题内容: 在下面的代码中,我希望循环在+ + =时立即退出。但是,使用语句进行测试表明它一直持续到循环完成为止。我尝试过,然后在语句集中进行设置,但这会导致无限循环。我认为使用然后设置可能有效,但也可以一直运行到循环结束为止。什么是最优雅,最快的退出方式?谢谢。 问题答案: 该循环将只匹配条件时,当控制返回到它,即循环完全执行。因此,这就是即使满足条件也不会立即退出程序的原因。 但是,如果条件没