C++ 使用cin.get()检测用户是否输入空格或输入条件
如果用户输入空格C++ 使用cin.get()检测用户是否输入空格或输入条件,c++,syntax,C++,Syntax,如果用户输入空格'或输入\n但空格部分似乎不起作用,即使我在!=''中替换,我也会尝试停止此输入循环与在一起!=32这是表示空间的ASCII码 #include<iostream> using namespace std; int main() { int temp, cho = 0; char in = '0'; while (in != '\n' && in != ' ') {
'
或输入\n
但空格部分似乎不起作用,即使我在!=''中替换,我也会尝试停止此输入循环代码>与在一起!=32
这是表示空间的ASCII码
#include<iostream>
using namespace std;
int main()
{
int temp, cho = 0;
char in = '0';
while (in != '\n' && in != ' ')
{
in = cin.get();
temp = in - '0';
if (temp >= 0 && temp <= 9)
cho += temp;
}
}
#包括
使用名称空间std;
int main()
{
内部温度,cho=0;
char in='0';
while(in!='\n'&&in!='')
{
in=cin.get();
温度=in-‘0’;
如果(temp>=0&&temp您实际上有三个问题,这些问题一开始无法相互独立区分,但一旦应用以下推理,这些问题就会变得清晰:
I.布尔条件不正确
这是错误的!您可能是指&&
(A!=B | | A!=C)
总是正确的(假设B
和C
是不同的,就像在您的示例中一样),因为A
不可能同时等于两者
二、 程序逻辑顺序错误
此外,您在错误的位置检查此项。您正在这样做:
- 将输入#0设置为“0”以使我们继续
- 输入#0是否符合我的退出标准?(否)
- 接受输入#1
- 处理输入#1
- 输入#1是否符合我的退出标准?(否)
- 获取输入#2(假设这是一个空格)
- 处理输入#2
- 输入#2是否符合我的退出标准?(是!)
- 结束循环
你看到你是如何检查输入的了吗?2太晚了?它已经被“处理”了。在实现上述修复后,你会很好地退出循环,但你已经将字符附加到了cho
这个怎么样:
int temp, cho = 0;
// Get input for the first iteration
char in = cin.get();
while (in != '\n' && in != ' ')
{
temp = in - '0';
if(temp >=0 && temp <=9)//so only the ASCII of digits would be entered
cho += temp;
// Now get input for the next iteration
in = cin.get();
}
int-temp,cho=0;
//获取第一次迭代的输入
char in=cin.get();
while(in!='\n'&&in!='')
{
温度=in-‘0’;
如果(temp>=0&&temp记住,应该注意的是,您正在读取一个以空格分隔的标记,而内置的格式化I/O运算符已经这样做了。例如,operator>()
被设计为拉出输入标记(比如一个数字),直到它到达空格(空格字符和换行字符)
一种更干净的方法是使用标准库中的标准算法和类,如std::istream\u迭代器
和std::acculate()
:
#包括
#包括
#包括
#包括
int main()
{
typedef std::istream迭代器iter\t;
国际热核试验堆(标准::cin);
int-cho(0);
if(it!=iter\u{})
{
自动s=*it;
cho=std::累加(std::开始,std::结束),0,
[](int v,无符号字符c){返回v+c-'0';});
}
std::cout>()
内部和std::acculate()
将遍历字符,将它们转换为整数,并累加它们的和。重复的好,在实际读取之前,您正在检查。@JayMiller不完全是一个重复。@ColonelThirtyTwo您是什么意思?如果(x!=''y!='')
…Related@kuhaku:当某人发布一些代码和输出图像时,很难不认为他们是在编造东西,而这些代码根本不可能生成输出图像。这不是我的错。只是说。读起来非常困难,但是,是的,这一点。当得到充分的评论时。“直到它到达空格,即空格字符和换行符”好吧,你忘记了很多字符!(C++11:27.7.2.2.3/8,22.3.3.1/1,22.4.1.1/2,幸运的是OP的“实现的本机字符集”使用了默认的语言环境,然后事实是。)@kuhaku您也需要
。抱歉,我以为我刚才添加了包含项。:)在谷歌搜索之后,看起来也需要\include
。@0x499602D2:啊,那么您就不需要
。
int temp, cho = 0;
// Get input for the first iteration
char in = cin.get();
while (in != '\n' && in != ' ')
{
temp = in - '0';
if(temp >=0 && temp <=9)//so only the ASCII of digits would be entered
cho += temp;
// Now get input for the next iteration
in = cin.get();
}