字符串的输入输出汇总
做字符串的题目的时候,经常会遇到输入输出不对的情况,这篇文章就简单总结一下字符串常见的输入输出。
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) | 将字符串中小写字母转换成大写字母 |
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。