C++中关于字符串数组的输入问题

小菜鸡的练习之路

C++中关于字符串数组的输入问题

今天在做PAT (Basic Level) Practice 下面这道题时想用string类型的字符串数组,猛然发现不熟练这种类型的输入,甚至忘记了cin和get()、getline()的区别,特再写一遍,也给同样不熟悉的人再记起一次。以下代码块也以此题为例。

在这里插入图片描述

1、cin方式

cin输入方式以空格、Tab键以及回车作为结束标志。意味着这种方式不能输入上面三种字符,遇到这三个自动结束输入。

int main(){
	string m[82];
	int i=0;
	char lu;
	while(true){
		cin>>m[i];
		i++;
		lu=getchar();
		if(lu=='\n') break;
	}
	i--;
	for(int j=i;j>0;j--) cout<<m[j]<<" ";
	cout<<m[0];
}

特说明此方法我写时未想到以getchar()函数判断来结束输入,想着读到回车了就在while括号里判断,类似“(XX!=‘\n’)”这样,学习到了博主“__zz11”的写法,感谢大佬让我学到了一种写法,博文: link
在这里插入图片描述

2、getline()函数输入字符串

记得加上“#include”,以回车作为结束符,但是如果之前的输入是cin或者什么同样以回车作为结束符的输入,回车会被getline()读到,从而当做结束符结束getline的输入,这种情况我一般在两个中间加个char类型炮灰来解决。

	string m;
	getline(cin,m);
	cout<<m<<endl;

例如这种情况,如果你输入x之后空格再输入m就不会有错,但如果你是输入x之后按回车就直接结束了。

int main(){
	int x;
	cin>>x;
	string m;
	getline(cin,m);
	cout<<m<<endl;
}

加个炮灰就好了,这个问题和解决方式其实还蛮常见的

int main(){
	int x;
	cin>>x;
	char p;
	p=getchar();
	string m;
	getline(cin,m);
	cout<<m<<endl;
}

谢谢啦,关于string类型的输入有其他方式的希望多多评论教教本菜啦

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值