字符串的输入输出汇总
做字符串的题目的时候,经常会遇到输入输出不对的情况,这篇文章就简单总结一下字符串常见的输入输出。
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); | 能 | 是 | 否 | 考试禁用 |
getline | getline(cin,a); getline(cin,b); | 能 | 否 | 是 | |
cin.getline | cin.geline(a,len,'\0') | 能 | 是 | 否 | |
cin.get | cin.get(a,5) | 能 | 是 | 否 | |
fgets | fgets(a,5,stdin) | 能 | 是 | 否 | |
scanf | scanf("%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) | 将字符串中小写字母转换成大写字母 |
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。