输入输出和文件读写

1、读入多行字符+数时,前面加个空格代替getchar(),节省大量时间

5
abcba
cin>>n;
getchar();//读空格
getline(cin,s);

2、读入多行字符+数时,前面加个空格代替getchar(),节省大量时间

m 1 2
m 2 3
c 2 3
scanf(" %c%d%d",&a,&b,&c)//读入多行字符+数时,前面加个空格代替getchar(),节省大量时间

3、未知行数数据输入。

一般用于输入未知个相同类型(int/float/double)的数值

int t; //t是你要输入的数据,可以是float、double等
while (cin>>t) //每输入一个就进行操作,注意数据之间应以空格隔开
{
    //code
}
int t;
while (scanf("%d",&t)==1) //返回值个数是1.
{
    //code
}
int t;
while (scanf("%d",&t)!=EOF) //while (~scanf("%d",&t))
{
    //code
}

如果需要输入的是未知组数据,一行内容对应多个数值,仅需声明与组中包含的数值个数相当的数值类型,按上面的方法使用cin流进行输入,或者检测scanf的返回值是否与数值个数相等即可

需要注意的是这些方法在本地编译运行时不会自动结束输入,需要使用回车+Ctrl+Z来手动结束输入,但在OJ评测系统中不需要关注这些,是可以正常运行的。

4、未知行字符串输入。

有时候需要处理多个句子,每个字符串占一行,每条句子字符之间可能有空格,如果用上面的方法是无法完成的。

无论是cin>>string name还是scanf("%s",*char name)遇到空格都会停止读取,并不能读入完整的句子。

C++处理string类的方法是使用getline方法,使用方法如下

string s;
while (getline(cin,s))
{
    //code
}
char s[];
while (gets(s))
{
    //code
}
char s[]
while (scanf("%s",s)!=EOF)
{}

5、scanf读入字符数组,从下标k开始存

char a[1000];
scanf("%s",a+k);

6、读入带中间空格的字符数组,以内容不超200个为例

char a[210];
cin.getline(a+1,205);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值