关于C++的cin输入格式的问题

关于C++的cin输入格式的问题C++的cin有没有办法达到类似的输入呢?
scanf("%d-%d-%d %d:%d:%d",&year,&mon,&day,&hour,&min,&sec);
语法上,不需要自己编代码实现的。

很简单,你想在输入x y时用逗号分隔,那么其实输进电脑的是三个值,这三个值分别为"x",",","y",此时就要再定义一个字符型变量。main函数如下:
int main()
{
double x,y;
char c;
cin>>x>>c>>y;
if(fabs(x*x+y*y-1)<0.001) cout<<"Y"<<endl;
else cout<<"N"<<endl;
return 0;
}
很简单,你想在输入x y时用逗号分隔,那么其实输进电脑的是三个值,这三个值分别为"x",",","y",此时就要再定义一个字符型变量。main函数如下:
int main()
{
double x,y;
char c;
cin>>x>>c>>y;
if(fabs(x*x+y*y-1)<0.001) cout<<"Y"<<endl;
else cout<<"N"<<endl;
return 0;
}追问

复制来的东西,你觉得好吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-18
cin只是用来输入,如果需要格式控制还是需要scanf追问

这样啊~

本回答被提问者采纳
第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;
}
相似回答