博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++字符串输入方式scanf + gets + getchar + cin + getline对比
阅读量:2227 次
发布时间:2019-05-09

本文共 2197 字,大约阅读时间需要 7 分钟。

只是换成了markdown,防止质疑原创,帖个之前这篇文章的后台数据

在这里插入图片描述
提醒一句:
平台不同,编译器不同。
CB编译的c++采用的头文件是,而VC++ 引用的头文件是,以下程序采用CB编写。
但是现在C++11统一头文件之后貌似这个问题不大。

scanf 遇空格终止

#include 
#define N 101010using namespace std;int main(){
char s[N],b[N]; cout<<"请输入字符串:\n"; while(~scanf("%s",s)){
int i = 0; while((b[i] = s[i])!='\0') i++; cout<<"字符串复制如下:\n"; puts(b); cout<<"请输入字符串:\n"; } return 0;}

样例:输入中有空格,自动划分成了两个字符串

在这里插入图片描述

getline

#include 
#define N 101010using namespace std;int main(){
//char s[N],b[N]; string s,b; cout<<"请输入字符串:\n"; while(getline(cin,s)){
b = s; cout<<"字符串复制如下:\n"; // puts(b); cout<
<

样例:可以读入空格,以’\n’结束

在这里插入图片描述
用逗号间隔,输入字符串

#include 
#define N 101010using namespace std;int main(){
string s; cout<<"请输入字符串:\n"; cin>>s; stringstream input(s); int k = 0, a[N]; while(getline(input, s, ',')){
// 逗号间隔输出 a[k] = stoi(s); k += 1; } cout<<"转化为整数输出:\n"; for(int i = 0;i < k;i++) cout<
<

在这里插入图片描述

gets 包括空格,遇’\n’终止

#include 
#define N 101010using namespace std;int main(){
char s[N],b[N]; cout<<"请输入字符串:\n"; while(gets(s)) {
int i = 0; while((b[i] = s[i])!='\0') i++; cout<<"字符串复制如下:\n"; puts(b); cout<<"请输入字符串:\n"; } return 0;}

样例: 可读入空格

在这里插入图片描述

getchar() 终止条件自己定,在终止之前可读入所有的操作

#include 
#define N 101010using namespace std;int main(){
char s[N],b[N]; int i = 0; cout<<"请输入字符串:\n"; while((s[i] = getchar())!='\n')///模仿getline {
b[i] = s[i]; i++; } cout<<"字符串复制如下:\n"; puts(b); return 0;}

样例:按回车之前,可以保存所有的输入

在这里插入图片描述

sscanf 暂时参考 https://www.cnblogs.com/lanjianhappy/p/6861728.html

cin 类似于scanf

但是有这么一种用法,输入可变长数组,以回车结束输入。

#include 
#define N 101010using namespace std;int main(){
int n; int p[N]; int i = 0; cout<<"开始输入字符:\n"; while(1){
cin>>n; p[i] = n; i += 1; char s = cin.get(); // 用s来接收是不是按了回车 if(s == '\n'){
break; } } cout<<"输出结果为:\n"; for(int j = 0 ;j < i;j++) cout<
<<" "; cout<

样例:输出未知长度数组,以回车结束输入。

在这里插入图片描述

你可能感兴趣的文章
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>