先声明一下字符串的初始化:当初始赋值的时候一定是反斜杠0(\0)有三种方式“”,{‘\0’}."\0"(如果是已经赋值的我们可以采用memset(recvbuf, '\0', sizeof(recvbuf));这种方式来清空)

下面来介绍c++的几个关于按键输入捕获:

一.cin

  使用cin输入时,程序将输入视为一系列字节。每个字节都被解释为字符编码。不管数据类型是什么,输入一开始都是字符数据,然后cin对象负责将数据转换成其他类型。当你输入Michael Jackon时,通运行程序你会发现name只存储了Michael,这是为什么呢?

原来是 cin使用空白(空格,制表符和换行符)来确定字符串的结束位置在读取字符数组时,cin将只会读取第一个单词,cin将该字符串放到数组中,并自动添加空字符Michael Jackon 之间的空格被当作结束符了,而Jackon被继续留在输入队列中,直到下一次读取输入。

二.getline()和cin.getline()

  两者的功能基本相同都可以接受空格,且会把换行符进行丢弃,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数。getline定义在string中,getline利用cin可以从标准输入设备键盘读取一行,当遇到如下三种情况会结束读操作:1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。

函数原型有两个重载形式: 
istream& getline ( istream& is, string& str); / /默认以换行符结束 
istream& getline ( istream& is, string& str, char delim);

#include <string>
#include <iostream>
using namespace std; int main()
{
string str;
getline(cin,str);
cout<<str<<endl;
return 0;
}

  函数作用:从标准输入设备键盘读取一串字符串,并以指定的结束符结束。 
函数原型有两个: 
istream& getline(char* s, streamsize count); // 默认以换行符结束 
istream& getline(char* s, streamsize count, char delim);

#include<iostream>
#include<string>
using namespace std; main ()
{
char m[3][20];
for(int i=0;i<3;i++)
{
cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;
cin.getline(m[i],20);
}

三.cin.get

即cin.get(), cin.get(char ch), cin.get(array_name, Arsize) 
对应的函数原型如下: 
int cin.get(); 
istream& cin.get(char& var); 
istream& get ( char* s, streamsize n ); // 读取字符串时,默认以换行符结束。 
istream& get ( char* s, streamsize n, char delim ); // 读取字符串时,第三个参数可指定结束符读取字符的情况: 

输入结束条件:Enter键 对结束符处理:不丢弃缓冲区中的Enter cin.get() 与 cin.get(char ch)用于读取字符,他们的使用是相似的, 即:ch=cin.get() 与 cin.get(ch)是等价的.
cin.get(array,20);读取一行时,遇到换行符时结束读取,但是不对换行符进行处理,换行符仍然残留在输入缓冲区,所以我们需要再调用一下cin.get();来处理掉换行符。

c++字符串的输入的更多相关文章

  1. c++字符串的输入的思考

    字符串的输入,是学习c++的一个重点,也是一个极富有细节意味的知识点,如果你不了解这些细节,你可能会在写程序时犯错而一脸懵逼不知所措. 与此同时,我们要了解c++缓冲区的概念,程序的输入都建有一个缓冲 ...

  2. Lua 用指定字符或字符串分割输入字符串,返回包含分割结果的数组

    // 用指定字符或字符串分割输入字符串,返回包含分割结果的数组 // @function [parent=#string] split // @param string input 输入字符串 // ...

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

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

  4. Oracle 在字符串中输入单引号或特殊字符

    -- Start 字符串是用单引号括起来的,如果想在字符串中输入单引号该怎么办呢?有两种方法. 方法一:是用两个单引号代表一个单引号 SELECT 'I''m Shangbo' FROM DUAL; ...

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

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

  6. 字符串的输入问题 C++

    C++中,初学时最常用的输入字符的方式为cin,但是,cin是如何确定已经完成了字符串的输入了呢?由于不能通过键盘输入空字符("\0"),因此cin需要用别的方法来确定字符串的结尾 ...

  7. [原创]C++带空格字符串的输入问题

    字符串一直是一个重点加难点,很多笔试面试都会涉及,带空格的字符串更是十分常见,现在对字符串的输入问题进行一下总结. C++用cin输入的时候会忽略空格以后的字符,比如 char a[100]; cin ...

  8. C语言基础(9)-字符串格式化输入和输出

    1.字符串在计算机内部的存储方式 字符串是内存中一段连续的char空间,以’\0’结尾 2.printf函数,putchar函数 putchar输出一个char printf是输出一个字符串 prin ...

  9. prmopt 提示框接收字符串,输入后按确定弹出警告框,警告内容为逆序的字符串

    虽然已经找到offer,但因为公司还没安排实习,所以在学校的时间多了很多.好吧,这段时间我用来备考四级啦(好悲催,还没过),然后这一天,闲着无聊,就帮妹妹看了这样子一道题目啦. 题目内容: 编制一个从 ...

  10. C/C++中字符串的输入问题

    standard C I/O 头文件:#include <stdio.h> . getchar() 原型:int getchar(void); 功能:从标准输入获取并返回下一个字符,并释放 ...

随机推荐

  1. python 学习笔记(一):在列表、字典、集合中根据条件筛选数据

    一.在列表中筛选数据 在列表中筛选出大于等于零的数据,一般通用的用法代码如下: data = [3, -9, 0, 1, -6, 3, -2, 8, -6] #要筛选的原始数据列表 result = ...

  2. Spring学习之==>入门知识

    一.Spring是什么? Spring 是一种轻量级的.非侵入式的 Java/JavaEE 应用框架.Spring 使用的是基本的 JavaBean 来完成以前只可能由EJB完成的事情.然而,Spri ...

  3. linux之文件查找find grep详解,以及压缩归档

    .find linux里的实时查找工具,通过制定路径完成文件查找. find[options]...[查找路径] [查找条件] [处理动作] 查找路径:查找的位置,默认是当前文件夹. 查找条件:指定查 ...

  4. docker 入门 命令

    docker 命令 docker images 镜像列表 docker ps 服务列表 docker 隐藏打包文件 .dockerignore .git node_modules npm-debug. ...

  5. photoshop人物美白教程:暗沉肤色提亮美白

    内容提要:本篇photoshop人物美白教程的制作方法主要通过提取高光选区,配合滤色模式进行人物美白. ps美白教程在网络上搜索,会找到很多.本文介绍的PS人物美白方法,笔者看来是比较好的一种,主要是 ...

  6. 【MM系列】SAP技巧之更改布局

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP技巧之更改布局   前言部分 ...

  7. Python面试-DB相关

    昨日回顾: 面试 Python综述 设计哲学 版本变迁及发展 GIL 内存管理及垃圾回收 并发并行 昨日作业一:Python是否存在内存泄露 作业二:过往的项目中有没有出现过性能问题? 作业三:什么是 ...

  8. Redis高级主题

    Redis高级主题   持久化 Redis 支持持久化, 其持久化数据有两种方式. 两种可以同时使用. 如果同时使用, Reids 在重启时将使用 AOF 方式来还原数据. RDB 按照一定策略定时同 ...

  9. elastic mapping not_analyzed 简单理解 + analysis-ik分词器安装

    1.索引index ,这个参数可以控制字段应该怎样建索引,怎样查询.它有以下三个可用值: not_analyzed:将字段的原始值放入索引中,作为一个独立的term,它是除string字段以外的所有字 ...

  10. VS2017:"64位调试操作花费的时间比预期要长",无法运行调试解决办法

    关于这个问题网上搜了好久,参考http://www.yishimei123.com/network/685.html这篇文章,最后终于解决了,在此表示非常感谢! 我的环境是:win10+VS2017 ...