【C++】输入的几种方式
1 前言
输入输出挺重要,同时可以选择的方式也很多,而本文主要指出在输入输出的时候你可能遇到的一些问题,提供一些解决的方法,并补充你可能不知道的点。另外这里的输入输出主要为从键盘输入,向屏幕输出
强烈建议大家先看一下这篇文章,关于几种输入方式的区别,看完之后可能就不用看这里了(笑)
2 实例
一般来说,关于输入的问题比较集中在输入遇到“空格”、“换行”,“如何结束”等
2.1 cin 方式
头文件 <iostream>
,主要包括以下三种方式
- cin >>
- cin.get()
- cin.getline()
cin >>
这种输入方式最大的问题就是遇到 [space]
[Tab]
[enter]
之后会结束,所以如果遇到要输入这些字符的情况时,不建议大家采用 cin >>
,而是后面的几种办法
cin 判断输入结束
做 OJ 题目,时常碰到不定数量的输入数据。而在输入数据的多少不确定,且没有结束标志的情况下,该如何判断输入数据已经读完了呢?看下面的例子
int n;
while(cin >> n) {//do something
}
// do something
// return answer
cin 在正常读取时返回 true,遇到结束标志时返回 false,我们可以根据 cin 的返回值来判断是否读取结束
而我们在控制台中输入特殊的控制字符就表示输入结束了
- Windows,通过键盘输入时,按
Ctrl+Z
组合键后再按回车键,就代表输入结束 - UNIX/Linux/Mac OS,
Ctrl+D
代表输入结束。
如果 cin 在读取过程中发生了错误,cin >> n
这样的表达式也会返回 false,例如刚刚的例子,如果输入的不是数字而是字母,就算出错
cin.get()
cin.get() 这种方式有很多重载,这里举几个常用方法
// 1. int get(),此法最好用 int
int c;
while((c = cin.get()) != EOF) {cout.put(c);
}// 2. istream& get (char& c);
char c;
cin.get(c);// 3. istream& get (char* s, streamsize n, char delim);
// 这里最后一个参数为终止符,不填默认为换行符 '\n'
// 这个方法读到“终止符”后,将换行符之前的字符自动加上'\0'作为 c-string
// 与 getline 不同,终止符不会被提取,会被保存在流中下一次被读取
char str[256];
cin.get(str, 256, '\n'); //等价于 cin.get(str,256);
cin.getline()
cin.getline() 与前面提到的 cin.get()
第3个重载类似,但是终止符会从流中提取出来丢弃掉
// istream& getline (char* s, streamsize n, char delim );
// A null character ('\0') is automatically appended to the written sequence if ...
// n is greater than zero, even if an empty string is extracted.
char str[256];
cin.getline(str, 256, '\n');
2.2 getline 方式
头文件 <string>
比较适合输入一串包含空格等未知长度的字符串,且使用 string
类型
// istream& getline (istream& is, string& str, char delim);
// 注意第二个参数接受的是 string 类型
// 最后一个参数为终止符,默认为 '\n',终止符会从流中提取出来并丢弃
string buf;
getline(cin, buf, '\n'); //等价于 gelin(cin, str);
3 参考资料
[1] C++输入输出流 http://c.biancheng.net/cplus/50/
[2] cin、cin.get()、cin.getline()、getline()的区别 https://blog.csdn.net/a3192048/article/details/80303547
【C++】输入的几种方式相关推荐
- android 只能输入汉字,EditText限制输入的几种方式及只显示中文汉字的做法
前段时间项目中有个需求是要求只能输入汉字,并且不能输入偏旁部首,于是总结了下EditText限制输入的几种方式,但是对于语音输入的还没找到好的解决方案: 通过设置EditText的inputType来 ...
- c语言关于数组输入的两种方式
今天上课的时候老师有讲到数组输入有两种方式,一种是直接赋值输入进数组,第二种是利用地址赋给数组,下面是代码: 第一种:直接输入 void model(int *p)//(int p[]){for(i= ...
- input框不能输入的几种方式
效果: 1: readonly规定输入字段为只读可复制,但是,用户可以使用Tab键切换到该字段,可选择,可以接收焦点,还可以选中或拷贝其文本. <input type="text&qu ...
- java中获取输入的几种方式
//方法一 package com.hehe.domain;import java.util.Scanner;public class ScannerDemo {public static void ...
- Python实现中文输入的两种方式
方法一: 首先安装pyperclip库:pip install pyperclip import pyperclip pyperclip.copy('规定')#将规定复制到系统剪贴板# pypercl ...
- Java键盘输入的几种方式,大爱Scanner
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 ...
- 【C语言】字符串输入的三种方式
一.gets() 该函数原型为: # include <stdio.h> char *gets(char *str); gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针 ...
- 字符串输入的几种方式
字符串配套 1,以字符数组输入 #include <iostream> #include <string> const int M = 1e5 + 10; char str[M ...
- C语言关于scanf语句输入的三种方式。
注意:本文使用的编译软件的是vs2010. 1.scanf("%d%d%d",&a,&b,&c) 填写a b c的数值时,中间要有空格号隔开.如下图. -- ...
最新文章
- 一位年轻董事长给大学生的18条好建议
- c语言程序改错类型,C语言程序改错总结
- thinkphp框架细节
- ASP.NET MVC3 301永久重定向实现程序
- 吴恩达机器学习(第一章)——初识机器学习
- 使用 u-boot 烧写内核——韦东山嵌入式Linux学习笔记10
- jquery实现二级联动不与数据库交互
- word List 22
- 无法加载_Microsoft store应用商店无法加载 问题解决
- 如何忽略有关本地更改的“ git pull”错误,因为合并会覆盖我的本地更改?
- 语言可以编辑系统软件吗_你知道吗?你本来也可以精通多国语言
- c/c++ 内存对齐
- 合理使用“搜索引擎和工具书”,提升“速度和加速度”
- 4G标准LTE FDD与LTE TDD的不同
- matlab气体流速,气体流速的测定方法.pdf
- The RSpec Book笔记《四》Describing Code with RSpec用RSpec描述代码
- C语言实现部标JTT808
- 量子纠缠 计算机,计算机科学家利用量子纠缠系统,证实44年前的一个猜想是错误的...
- 关于最近争议很大的链动模式详细分析
- 刘华:上云还是不上云,这是一个问题