欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数getline(cin,str)使用时易错点

程序员文章站 2024-01-25 15:33:58
...

函数getline(cin,str)使用时易错点
今天做题时,无意间发现一个在使用getline(cin,str)读入字符串时的易错点。
因为getline(cin,str)在读取字符串时是可以读入空格的,所以在部分题目输入的情况下,这种输入方式比cin和scanf要更加方便。
但非常要注意的是,如果开始输入的时候是数字,且使用cin读入时,空格是不会被读进来的,所以在后面循环读入时,getline(cin,str)会讲数字后的空格先读进来作为a[0],这也就导致了以n为界读取时,总是会少读取最后一行字符串。

这时就可以使用getchar()函数来读取第一行的换行,接着在循环内用getline(cin,str)函数读入字符串。

using namespace std;
#include<bits/stdc++.h>
int main(){
	string a[105];
	int n;
	cin>>n;
	getchar();//读取输入n后的换行 
	for(int i=0;i<n;i++)
	{
		getline(cin,a[i]);
//		cout<<a[i]<<"\n";	
	} 
//	for(int i=0;i<n;i++) cout<<a[i]<<"\n";
	string str="";
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<15;j++)
		{
			if(a[i][j] == 'T') str+=a[i][j-2];
		}
	}
//	cout<<str<<"\n";
	for(int i=0;i<str.length();i++)
	{
		if(str[i] == 'A') str[i]='1';
		else if(str[i] == 'B') str[i]='2';
		else if(str[i] == 'C') str[i]='3';
		else if(str[i] == 'D') str[i]='4';
	}
	cout<<str;
	return 0;
}
相关标签: PAT