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++中字符串的输入问题的更多相关文章

  1. C++中的字符串的输入输出函数、空字符与空格的区别、字符变量赋值和字符串初始化

      一.字符串输入输出函数 1.  cin.get()   逐个字符输入输出 2.  cin 可以将整个字符串一次性输入,但是,cin将空格.Tab和回车键,因此不能用于数组的一次性输入. 注意:ci ...

  2. 字符串数组 输入3个字符串,要求按由小到大的字母顺序输出; 输入n个学生的姓名和学号到字符串数组中,在输入一个姓名,如果班级有该生则返回其信息,否则返回本班无此人

    输入3个字符串,要求按由小到大的字母顺序输出 如 输入franch england china,输出结果是china england franch 三个数排序输出,比较三个数的大小怎么做? a=18 ...

  3. 设在起始地址为STRING的存储空间存放了一个字符串(该串已存放在内存中,无需输入,且串长不超过99),统计字符串中字符“A”的个数,并将结果显示在屏幕上。

    问题 设在起始地址为STRING的存储空间存放了一个字符串(该串已存放在内存中,无需输入,且串长不超过99),统计字符串中字符"A"的个数,并将结果显示在屏幕上. 代码 data ...

  4. C++ 中字符串标准输入的学习及实验

    声明:下面实验中[]里面表示要输入里面的符号,[]符号本身并未输入 1.cin>> cin使用空白(空格.制表符.回车)来确定字符串的结束位置. cin会将换行符留在输入输出队列中. #i ...

  5. Java中从键盘输入的三种方法

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  6. Java编程中获取键盘输入实现方法及注意事项

    Java编程中获取键盘输入实现方法及注意事项 1. 键盘输入一个数组 package com.wen201807.sort; import java.util.Scanner; public clas ...

  7. Go语言中字符串的查找方法小结

    这篇文章主要介绍了Go语言中字符串的查找方法小结,示例的main函数都是导入strings包然后使用其中的方法,需要的朋友可以参考下   1.func Contains(s, substr strin ...

  8. <CPP学习 第二天> 字符串的输入 及 String类

    今天简单的学习了字符串的输入以及C++的String类. 1.面向行的输入: getline(); getline()函数读取整行,通过回车键输入的换行符来确定输入结尾.要调用这种方法,可以使用cin ...

  9. python中字符串编码方式小结

    Python2中字符串的类型有两种:str和unicode,其中unicode是统一编码方式,它使得字符跟二进制是一一对应的,因此所有其他编码的encode都从unicode开始,而其他编码方式按照相 ...

随机推荐

  1. qt 5.1.1 on CentOS 6.4

    Overview If you are trying to install Qt and Qwt [qwt.sourceforge.net] (Qt Widgets for Technical App ...

  2. [poj 2978]Colored Stones[状态压缩DP]

    题意: 给出n个石子,一共m种颜色.问最少去掉几个石子使得同种颜色全连续. 思路见注释. #include <algorithm> #include <cstdio> #inc ...

  3. 高德地图API

    这周计划: 周一 早上 (高德地图API) 中午写(IFE PART ONE) 下午(高德地图API) 下班(IFE PART ONE)

  4. JavaScript之insertBefore()和自定义insertAfter()的用法。

    在JS图片库的第五版开发完后http://www.cnblogs.com/GreenLeaves/p/5691797.html#js_Five_Version我们发现一个问题,就是假设在图片列表之后还 ...

  5. Asp.Net写文本日志

    底层代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespac ...

  6. iOS 处理键盘遮挡TextField、TextView问题

    之前处理键盘遮挡问题都是在每一个控制器进行单独处理,这样做真的是非常的费事,今天在做项目的时候就想到自己封装一个,记录一下这个“跌宕起伏”的过程. 思路是这样的:计算文本编辑控件Frame与键盘Fra ...

  7. jaspersoft 5.6.0 相关问题

    <property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true" ...

  8. 关于Google指令(别提baidu)

    关于google指令 关于google指令 google为我们准备好了的"指令"(directive),可以最大限度帮助我们完成每一次搜索.这些指令其实就是一个个关键字,能让我们从 ...

  9. uva 10779 Collectors Problem 网络流

    链接 一共有n个人, m种收藏品, 每个人拥有的收藏品的种类和个数都是不相同的. 假设2-n这些人都只和1互相交换, 比例是1:1, 并且, 2-n这些人, 只换自己现在没有的, 如果他现在有第二种, ...

  10. srand() rand() time(0)

    标准库<cstdlib>(被包含于<iostream>中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void):从srand (seed)中指定的seed开始 ...