第2个回答 2019-02-18
上面的语句无非就是输入数字然后输入一个短划线或者冒号,用cin也是一样的,无非就是你输入的短划线或者冒号需要一个字符串变量来接收呗。
string str;
int year,month,day;
cin>>year>>str>>month>>str>>day;
这些在输入的时候样式是一样的。
追问emmm,这个我会,但是,我想要的和你这个不太一样,就像刚才那个
scanf("%d-%d-%d %d:%d:%d",&year,&mon,&day,&hour,&min,&sec);这里输入的格式,数字与数字之间必须是-或者:才能正常读取,像你这样的话,中间加个字符变量接收,无论是什么字符都会被接收,就不限定是-和;了
你这里只要数与数之间是字符就会正确接收,跟我想要的不一样
追答那恐怕得自己加判断语句了
第3个回答 2019-02-19
这个还真不太容易说明白,因为C++使用流这个东西,cin是一个流对象,接收终端的输入遇到回车结束
然后终端的输入都存入到cin对象里
然后通过重载的运算符>>将存储的内容存储到变量里,但是默认按空格结束,其实你可以修改结束标志的
那么分析你cin的过程,输入1 空格 2,流里存入了1空格2
然后cin>>a,将1传给了a,遇到了空格,结束,但是此时cin并没有空.
cout << a,输出了1
然后继续cin>>b,因为cin里还有一个2存在,所以,b也得到了2
cout << b,就又输出2了
我也改一个判断输入的吧
#include
using namespace std;
int main()
{
int a=0,b=0;
char c;
while((c=cin.get()) != ' ' && c >= '0' && c <= '9')
{
a = a*10 + (c - '0');
}
//语句1
cout <<a; //语句2
//cin >>b; //语句3
while((c=cin.get()) != ' ' && c >= '0' && c <= '9')
{
b = b*10 + (c - '0');
}
cout <<b; //语句4
return 0;
}