关于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;
}

C++ cin输入格式的问题
很简单,你想在输入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...

c++用cin输入数组问题
只能先用一行输入a,再用一行输入b[a]——因为cin是从右边开始压栈的,就是先压b[a]再压a,显然压b[a]时还不知道a是多少,后面输入了a,但改变不了已经压栈了的内容。就是说这种情况一定要保证操作b[a]时a必须是已知的。但这种东西与编译器关系很大,也许后来的编译器异想天开,弄个别致的...

关于C++输入cin的问题,下面的程序,如果输入的不合法,那就将陷入死循环...
例如你输入的数据为a,然后回车,此时输入缓冲区中就有两个字符,一个是‘a’,一个是回车换行符‘\/n’,接着程序读取,由于类型不匹配,读取失败,并没有读走输入缓冲区中的数据,也就是说,此时输入缓冲区中还是‘a’,和‘\\n’,

c++用cin输入字符问题
cin这是输入函数,cout才是输出。可以改为:cout<<"("<<x<<","<<y<<")";如果你不要小括号就是:cout<<x<<","<<y;希望对你有帮助...

关于C++中cin的几个问题
1.cin.getline是读入一行字符,比如:include <iostream.h> void main(){ char str[20];cout<<"Input :";cin.getline(str,20);cout<<str<<endl;} 当输入:abd cdrasdf g的时候就会输出:abd cdrasdf g。2.cin.get()第一个用法,是读入一个字符。include <iostream.h> void main(){ cha...

关于C++的cin输入格式的问题
上面的语句无非就是输入数字然后输入一个短划线或者冒号,用cin也是一样的,无非就是你输入的短划线或者冒号需要一个字符串变量来接收呗。string str;int year,month,day;cin>>year>>str>>month>>str>>day;这些在输入的时候样式是一样的。

为什么c++中 cin>>x>>y;是正确,cin>>x, y;是不正确的?说的深奥点,为什 ...
因为cin是以流的方式输入输出的,而不是用参数

C++关于cin和cout
1、cin输入默认分隔符是空格或者回车,也可以设置分隔符。没有分隔符没办法去分隔数,这无庸赘言。2、如果只输入一个数按回车并不会把第二个数默认为0。而是等待你继续输入。因为回车也是默认的分隔符之一。3、endl是C++中换行的一种写法。

c++语言关于cin的使用问题
一般只要用cin>>x>>y;就行了,程框矿里面输入时 用空格或者回车或者TAB键会自动隔开x,y 如果想要把空格记录进变量x或者y里面 常用的方法是 用cin.get 比如 char ch;ch=cin.get();或者cin.get(ch);括号中也可以放数组 如 char a[20];cin.get(a,20);cout<<a<<endl;那么在键盘...

c++编程问题 (关于cin的)
第一个cin是用户第一次输入的值,但是你要统计用户输入的正负的个数,那必然是输入多个值。所以在while循环里面的末尾添加cin的作用就是 用户以后输入的值了,知道用户输入0则停止。在while里cin>>n n的值就改变了,那么while()就会触发,进而判断是否满足条件。第二个cin是不指定次数循环进行的必要...

相似回答