青少年编程知识记录 codecoming

字符串的输入输出汇总

  1. 做字符串的题目的时候,经常会遇到输入输出不对的情况,这篇文章就简单总结一下字符串常见的输入输出。



2.cin

基本操作:

#include<iostream>  #include<cstdio>  #include<cstring>  using namespace std;  int main(){  	char a[100];  	cin>>a;  				//hello  	cout<<strlen(a)<<endl; 	                // 5  	cout<<a; 				//hello  	return 0;  }

能否读空格:

#include<iostream>  #include<cstdio>  #include<cstring>  using namespace std;  int main(){  	char a[100];  	cin>>a;  				//hello world  	cout<<strlen(a)<<endl; 	                // 5  	cout<<a; 				//hello  	return 0;  }

多个数组读入

#include<iostream>  #include<cstdio>  #include<cstring>  using namespace std;  int main(){  	char a[100];  	char b[100];  	cin>>a>>b;  			//hello world!  	cout<<strlen(a)<<endl; 	        // 5  	cout<<strlen(b)<<endl; 	        // 6  	cout<<a<<endl; 				//hello  	cout<<b<<endl; 				//hello!  	return 0;  }

是否支持换行读入

#include<iostream>  #include<cstdio>  #include<cstring>  using namespace std;  int main(){  	char a[100];  	char b[100];  	cin>>a>>b;  			//hello [回车] world!  	cout<<strlen(a)<<endl; 	        // 5  	cout<<strlen(b)<<endl; 	        // 6  	cout<<a<<endl; 				//hello  	cout<<b<<endl; 				//hello!  	return 0;  }

是否支持string

#include<iostream>  #include<cstdio>  #include<cstring>  using namespace std;  int main(){  //	char a[100];  //	char b[100];  	string a;  	string b;   	cin>>a>>b;  			//hello [回车] world!  //	cout<<strlen(a)<<endl; 	// 5  //	cout<<strlen(b)<<endl; 	// 6  	cout<<a.size()<<endl;	// 5  	cout<<b.size()<<endl;	// 6  	cout<<a<<endl; 				//hello  	cout<<b<<endl; 				//hello!  	return 0;  }

3.gets

基本操作

#include<iostream>  #include<cstdio>  #include<cstring>  using namespace std;  int main(){  	char a[100];  	gets(a);					//hello   	cout<<strlen(a)<<endl; 		// 5  	cout<<a<<endl; 				//hello  	return 0;  }

能否读空格

#include<iostream>  #include<cstdio>  #include<cstring>  using namespace std;  int main(){  	char a[100];  	gets(a);					//hello world  	cout<<strlen(a)<<endl; 		// 11  	cout<<a<<endl; 				//hello world   	return 0;  }

多个数组读入

#include<iostream>  #include<cstdio>  #include<cstring>  using namespace std;  int main(){  	char a[100];  	char b[100];  	gets(a);					//hello world [回车]  	gets(b);					//ni hao  	cout<<strlen(a)<<endl; 		                // 11  	cout<<strlen(b)<<endl; 		                // 6   	cout<<a<<endl; 				//hello world  	cout<<b<<endl; 				//ni hao    	return 0;  }

是否支持换行读入

#include<iostream>  #include<cstdio>  #include<cstring>  using namespace std;  int main(){  	char a[100];  	char b[100];  	gets(a);					//hello [回车]world [回车]  	gets(b);					//ni hao  	cout<<strlen(a)<<endl; 		// 5   	cout<<strlen(b)<<endl; 		// 5   	cout<<a<<endl; 				// hello   	cout<<b<<endl; 				//world    	return 0;  }

是否支持string

#include<iostream>  #include<cstdio>  #include<cstring>  using namespace std;  int main(){  //	char a[100];  //	char b[100];  	string a;  	string b;  	gets(a);					//hello world [回车]  	gets(b);					//ni hao  //	cout<<strlen(a)<<endl; 		// 5   //	cout<<strlen(b)<<endl; 		// 5   	cout<<a.size()<<endl;  	cout<<b.size()<<endl;  	cout<<a<<endl; 				// hello   	cout<<b<<endl; 				//world    	return 0;  }

4.getline

基本用法

#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		string a;  		getline(cin,a); 	//hello  		cout<<a.size()<<endl; //5   		cout<<a<<endl; 		// hello   	 	return 0;  	}

能否读空格 

	#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		string a;  		getline(cin,a); 	//hello world  		cout<<a.size()<<endl; //11   		cout<<a<<endl; 		// hello world;  	 	return 0;  	}

读入多个

	#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		string a;  		string b;  		getline(cin,a); 	//hello world[回车]  		getline(cin,b);		//ni hao   		cout<<a.size()<<endl; //11  		cout<<b.size()<<endl; //6  		cout<<a<<endl; 		// hello world;  		cout<<b<<endl;		// ni hao   	 	return 0;  	}

换行读入数据

	#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		string a;  		string b;  		getline(cin,a); 	//hello[回车]world[回车]  		getline(cin,b);		//ni hao   		cout<<a.size()<<endl; //5  		cout<<b.size()<<endl; //5	  		cout<<a<<endl; 		// hello   		cout<<b<<endl;		// world   	 	return 0;  	}

5.cin.getline

【函数用法】

接收一个字符串并输出(可含空格)。

【参数详解】

1.cin.getline()函数的完整形式有三个参数:cin.getline(字符数组名,字符个数,结束标志)

    注意:若指定参数“字符个数”为n,则利用cout函数输出时只显示字符数组中的前n-1个字符。

    原因:字符数组的第n个字符是不可见字符'\0'

2.当第三个参数省略时,系统默认为'\0'

3.简单实例:  

  · cin.getline(str,8,'m'),当输入abcdefghijklmn时,输出abcdefg,因为第8位是不可见字符'\0'

  · cin.getline(str,8,'e'),当输入abcdefghijklmn时,输出abcd

基础用法

	#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		cin.getline(a,5);      //hello  		cout<<a<<endl; 		// hell  	 	return 0;  	}

能否读空格

	#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		cin.getline(a,5);       //he ll  		cout<<a<<endl; 		// he l  	 	return 0;  	}



换行输入

	#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		char b[100];  		cin.getline(a,5); //hello  		cin.getline(b,6); //nihao   		cout<<strlen(a)<<endl; //4  		cout<<strlen(b)<<endl; //0    		cout<<a<<endl; 		// hell  		cout<<b<<endl; //[空]   		  	 	return 0;  	}

6.cin.get

基本操作

	#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		cin.get(a,5); 		//hello  		cout<<strlen(a)<<endl; //4  		cout<<a<<endl; 		// hell  	 	return 0;  	}

能否读入空格

	#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		cin.get(a,5); 		//he llo  		cout<<strlen(a)<<endl; //4  		cout<<a<<endl; 		// he l  	 	return 0;  	}

读入多个

#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		char b[100];  		cin.get(a,5); 		//hello  		cin.get(b,5); 		//nihao   		cout<<strlen(a)<<endl; //4  		cout<<strlen(b)<<endl; //1   		cout<<a<<endl; 		// hell  	 	return 0;  	}

读回车

#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		char b[100];  		cin.get(a,5); 		//hell[回成]o  		cin.get(b,5); 		//nihao   		cout<<strlen(a)<<endl; //4  		cout<<strlen(b)<<endl; //0   		cout<<a<<endl; 		// hell  	 	return 0;  	}

7.fgets

基础用法

#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		fgets(a,5,stdin); //hello	  		cout<<strlen(a)<<endl; //4  		cout<<a<<endl; 		// hell  	 	return 0;  	}

能否读空格

#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		fgets(a,5,stdin); //he llo  		cout<<strlen(a)<<endl; //4  		cout<<a<<endl; 		// he l  	 	return 0;  	}

读入多个

#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		char b[100];  		fgets(a,5,stdin); //hello  		fgets(b,5,stdin); //nihao   		cout<<strlen(a)<<endl; //4  		cout<<strlen(b)<<endl; //2  		cout<<a<<endl; 		// hell  		cout<<b<<endl;		//o   	 	return 0;  	}

8.scanf

基础用法

#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		scanf("%s",a); //hello  		cout<<strlen(a)<<endl; //5  		cout<<a<<endl; 		// hello  	 	return 0;  	}

能否读空格

#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		scanf("%s",a); //he llo  		cout<<strlen(a)<<endl; //2  		cout<<a<<endl; 		// he  	 	return 0;  	}

能否读回车

#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		scanf("%s",a); //he[回车]llo  		cout<<strlen(a)<<endl; //2  		cout<<a<<endl; 		// he  	 	return 0;  	}

读入多个

#include<iostream>  	#include<cstdio>  	#include<cstring>  	using namespace std;  	int main(){  		char a[100];  		char b[100];   		scanf("%s",a); //hello  		scanf("%s",b); //nihao   		cout<<strlen(a)<<endl; //2  		cout<<strlen(b)<<endl; //5   		cout<<a<<endl; 		// hello  		cout<<b<<endl;  	//nihao   	 	return 0;  	}

9.总结

方式写法能否读空格能否换行读入是否支持chars数组是否支持string备注
cin

cin>>a;

cin>>a>>b;

不建议读大数据
gets

gets(a);

gets(b);

不能,换行就是下一个。考试禁用
getine

getline(cin,a);

getline(cin,b);

不能,换行就是下一个。

cin.getlinecin.geline(a,len,'\0')不能,会结束全部输入实际长度比读入的要短
cin.getcin.get(a,5)不能,会结束全部输入实际长度比读入的要短
fgetsfgets(a,5,stdin)不能,会结束全部输入实际长度比读入的要短
scanfscanf("%s",a)不能,换行就是下一个

10.字符数组函数

函数格式函数功能
strcat(s1,s2)将字符串2连接到字符串1后边,返回字符串1的值。
strncat(s1,s2,n)将字符串2前n个字符连接到字符串1后边,返回字符串1的值。
strcpy(s1,s2)将字符串2复制到字符串1,返回字符串1的值
strncpy(s1,s2,n)将字符串2前n个字符复制到字符串1,返回字符串1的值
strcmp(s1,s2)

比较字符串1和字符串2的大小,返回的结果由函数带回

如果字符串1>字符串2,返回一个正整数

如果字符串1=字符换2,返回0

如果字符串1<字符串2,返回一个负整数

strncmp(s1,s2,n)比较字符串1和字符串2的前n个字符,返回值参考strcmp函数
strlen(s1)计算字符串的长度,终止符'\0' 不算在长度范围内
strlwr(s1)

将字符串中大写字母转换成小写字母
strupr(s1)将字符串中小写字母转换成大写字母



(adsbygoogle = window.adsbygoogle || []).push({});

作者:亿万年的星光 分类:C++知识 浏览: