C/C++中字符串的输入问题
standard C I/O
头文件:#include <stdio.h> . getchar() 原型:int getchar(void);
功能:从标准输入获取并返回下一个字符,并释放该字符空间。
返回值:读取的字符的ASCII,出错或到达文件结尾时返回EOF(-)。 键盘 缓冲区 getchar读取字符
入水口 蓄水池 出水口 a. 我们从键盘输入的字符串首先是放在缓冲区内的,再利用getchar()函数从缓冲区内读取字符。
b. 当用户键入回车符之后,getchar()才开始从缓冲区中读取字符(一次调用读取一个字符)。
c. 键入Enter建实际上产生了2个字符(回车符'\r'和换行符'\n')。回车符'\r'使光标回到行首,换行符'\n'换行。 // 读取含有space(空格),table(制表符)的字符串 #include <stdio.h> int main()
{
int t;
while ('\n' != (c = getchar())) printf("%c", t);
return ;
} /*
* input: 123table456space789
* output: 123 456 789
*/ // 当使用scanf()和gets()连用时,要使用getchar()清除scanf()输入完成最后键入的Enter键 #include <stdio.h> int main()
{
int nCase;
scanf("%d", &nCase);
getchar(); // 清空缓冲区
while (nCase--)
{
char str[];
gets(str);
printf("%s\n", str);
}
return ;
}
/*
* input:
* 2
* 123 456
* abc def
* output:
* 123 456
* abc def
*/ . gets() 原型:char* gets(char* str);
功能:从标准输入读取字符并把他们加载到str里,直到遇到换行或者到达EOF
返回值:返回读入的字符串,发生错误时返回NULL gets()和scanf()都可以输入字符串,两者的异同:
a. 不同点:
scanf()不能接受空格、制表符、回车
gets()可以接受空格、制表符,遇到回车结束输入
b. 相同点:
字符串接受结束后自动加'\0' . scanf() 原型:int scanf(const char* format,...);
功能:由format指定的格式从标准输入读取,并保存数据到其参数
返回值:成功赋值的变量的个数,发生错误时返回EOF a. scanf()读取匹配format字符串,当读取到控制字符,它就把值放置到对应变量
b. 空白会跳过,非空白字符和输入匹配,然后丢弃
c. %符号和控制符间的数,控制指定数量的字符转换到变量中
d. scanf()遇到一个字符集(用%[]表示的),那么在括号中的任意字符都会读取到变量中 scanf("%d %d", &a, &b);
如果a和b被成功读入,返回2
如果只有a被成功读入,返回1
如果a和b都未被成功读入,返回0
如果遇到错误或遇到end of file,返回值EOF(-)
只有当第一个参数为NULL时,才可能返回EOF 可以采用%[^\n]格式控制来输入含有空格,制表符的字符串 #include <stdio.h> int main()
{
char str[];
scanf("%[^\n]", str);
printf("%s\n", str);
return ;
}
/*
* input: 123 456
* output: 123 456
*/ C++输入含有空格制表符的字符串 对于字符数组 . getline() 有两种重载,只介绍一种
原型:istream& getline(char* buffer, streamsize num);
功能:读取字符到buffer中,直到发生以下情况:
a. num - 1个字符已经读入
b. 碰到换行符
c. 碰到EOF
d. 碰到字符delim(delim字符不会被放入buffer中)
返回值:如果getline()没有读入字符,将返回false,可用于判断文件是否结束。 调用方法:cin.getline(str, len);
args1: 用来存储输入数据 args2: 要读取的字符数 #include <iostream>
using namespace std; int main()
{
char str[];
cin.getline(str, );
cout << str << endl;
return ;
}
/*
* input: 123 456
* output: 123 456
*/ . get() 有多种重载,只介绍一种
原型:istream& get(char* buffer, streamsize num);
功能:读取字符到buffer直到num - 1个字符被读入, 或者碰到EOF或换行标志
返回值:发生错误时返回false,可用于判断是否正常输入 调用方法:cin.get(str, len); #include <iostream>
using namespace std; int main()
{
char str[];
cin.get(str, );
cout << str << endl;
return ;
}
/*
* input: abc def
* output: abc def
*/ getline()和get()的区别 两者都读取一行输入,直至换行符。
然后,getline将丢弃换行符,而get()将换行符保留在输入序列里。
所以,再使用cin.get()输入多行数据时,中间可以使用get()消除换行符。 #include <iostream>
using namespace std; int main()
{
char str1[], str2[];
cin.get(str1, );
cin.get();
cin.get(str2, );
cout << "str1: " << str1 << endl;
cout << "str2: " << str2 << endl;
return ;
}
/*
* input: abc def
* 123 456
* output: str1: abc def
* str2: 123 456
*/ 对string类 调用方法:getline(cin, str); #include <iostream>
#include <string>
using namespace std; int main()
{
string str;
getline(cin, str);
cout << str << endl;
return ;
}
/*
* input: 123 456 789
* output: 123 456 789
*/
C/C++中字符串的输入问题的更多相关文章
- C++中的字符串的输入输出函数、空字符与空格的区别、字符变量赋值和字符串初始化
一.字符串输入输出函数 1. cin.get() 逐个字符输入输出 2. cin 可以将整个字符串一次性输入,但是,cin将空格.Tab和回车键,因此不能用于数组的一次性输入. 注意:ci ...
- 字符串数组 输入3个字符串,要求按由小到大的字母顺序输出; 输入n个学生的姓名和学号到字符串数组中,在输入一个姓名,如果班级有该生则返回其信息,否则返回本班无此人
输入3个字符串,要求按由小到大的字母顺序输出 如 输入franch england china,输出结果是china england franch 三个数排序输出,比较三个数的大小怎么做? a=18 ...
- 设在起始地址为STRING的存储空间存放了一个字符串(该串已存放在内存中,无需输入,且串长不超过99),统计字符串中字符“A”的个数,并将结果显示在屏幕上。
问题 设在起始地址为STRING的存储空间存放了一个字符串(该串已存放在内存中,无需输入,且串长不超过99),统计字符串中字符"A"的个数,并将结果显示在屏幕上. 代码 data ...
- C++ 中字符串标准输入的学习及实验
声明:下面实验中[]里面表示要输入里面的符号,[]符号本身并未输入 1.cin>> cin使用空白(空格.制表符.回车)来确定字符串的结束位置. cin会将换行符留在输入输出队列中. #i ...
- Java中从键盘输入的三种方法
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- Java编程中获取键盘输入实现方法及注意事项
Java编程中获取键盘输入实现方法及注意事项 1. 键盘输入一个数组 package com.wen201807.sort; import java.util.Scanner; public clas ...
- Go语言中字符串的查找方法小结
这篇文章主要介绍了Go语言中字符串的查找方法小结,示例的main函数都是导入strings包然后使用其中的方法,需要的朋友可以参考下 1.func Contains(s, substr strin ...
- <CPP学习 第二天> 字符串的输入 及 String类
今天简单的学习了字符串的输入以及C++的String类. 1.面向行的输入: getline(); getline()函数读取整行,通过回车键输入的换行符来确定输入结尾.要调用这种方法,可以使用cin ...
- python中字符串编码方式小结
Python2中字符串的类型有两种:str和unicode,其中unicode是统一编码方式,它使得字符跟二进制是一一对应的,因此所有其他编码的encode都从unicode开始,而其他编码方式按照相 ...
随机推荐
- 将String类型的数字字符转换成int
java.lang.Integer.parseInt(String) public static int parseInt(String s) throws NumberFormatException ...
- cygwin在Windows8.1中设置ssh的问题解决
为了在Windows 8.1上直接使用Linux环境和hadoop开发,装了cygwin,同时设置ssh无密码登录. 但正常ssh-keygen后复制到authorised_keys后登录出现提示 ...
- ntpd和ntpdate的区别
之前配置ntpd的时候搜到一句话,印象很深刻,也觉得很有标题党的效果,就借鉴为标题了:“我认为有几种人是必须不招聘/裁掉的: 1 用ntpdate代替ntpd的人”但具体原因不太懂,总觉得还是用ntp ...
- 07.31 zepto
tag事件 viewport标签 flexbox弹性布局 响应式布局 rem 交互优化 touchstart touchend 高清图片 1px 单文本溢出 多文本溢出
- css3幻灯片换位效果
<title>css3幻灯片换位效果</title> <style type="text/css"> .flowGallery {width: ...
- HDU 5024 Wang Xifeng's Little Plot 搜索
pid=5024">点击打开链接 Wang Xifeng's Little Plot Time Limit: 2000/1000 MS (Java/Others) Memory ...
- c# webConfig中的session超时详细设置
webConfig中的session超时详细设置 我们在webConfig中设置Session超时的时候,如果最后发行的地址是远程服务器,我们很多不是必须的属性并不用设置,如果设之后,倒不能让 ses ...
- STL模板_map
map -key - value -键值无法重复 multimap -键值可以重复 声明: -map<int, string> m -multimap<int, string> ...
- JQuery实战学习--在dreamweaver 8中配置Jquery自动提示
最近在学习jQuery,然后在网上找到了自动提示的方法,记之. 1,首先下载jQuery_API.mxp这个扩展文件. 2,打开DW,点击命令-->扩展管理-->文件-->安装扩展, ...
- bootstrap你让前端小狮子们又喜又恨
看了一个用bootstrap框架建的页面,简直方便至极!各种添加类就可以实现各种功能,各种添加data-toggle让你不需要懂javascript就可以做出很炫的效果! 最重要的它做出来的页面还是响 ...