博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++输入
阅读量:5365 次
发布时间:2019-06-15

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

整行读取

  1. std::getline
string s;    getline(cin, s);    cout << s << endl;
  1. 利用 scanf 的正则特性
char s[100];    scanf("%[^\n]%*c", s);    printf("%s\n", s);
  1. std::gets (deprecated)
char s[100];    gets(s);    printf("%s\n", s);
  1. cin.get (std::basic_istream::get)
char s[100];      cin.get(s,100);    printf("%s\n", s);
  1. cin.getline (std::basic_istream::getline)
char s[100];    cin.getline(s, 100);    printf("%s\n", s);

比较常用的自然是方法1,简单省事儿。

比较一下上述方法4和方法5:

cin.get 可以有1个、2个、3个…参数,这里用的是2个参数的形式。

此时它和cin.getline的两个形参是相同格式的:basic_istream& get(char_type* s, streamsize count)

不同点在于:

1) 输入字符串不超过指定值时:(包含直接按回车的情况)

get(char*, size) 遇到'\n'停止,但不会从输入流中删去'\n',这就可能影响后面的读取操作;

getline(char*, size) 也是遇到'\n'停止,但它会从输入流删去'\n'

2) 输入字符串长度超过指定值:

都是获取size-1个字符,然后加上'\0',总体长度是size。然后get依然不去掉'\n',而getline也不去掉'\n',但它会关闭输入流。

其他无需过多了解,此处不表。

refer to: 


处理以逗号分隔的数据

以逗号分隔的数字(或char):使用cin.get跳过逗号

vector
data; int tmp; while (cin>>tmp){ data.push_back(tmp); if (cin.get() == '\n') break; // replace break with your code }

以逗号分隔的字符串:使用getline指定分隔符

vector
data; string tmp; while (getline(cin,tmp,',')){ data.push_back(tmp); }

此外还可以:

使用scanf:"%d,"

scanf("%d,", &i);  // "%d,": 空格和逗号都可处理,但外层循环要指明循环次数,否则不知道什么时候结束

scanf和sscanf的简单正则支持

/**  输入语句的简单正则  **/// sscanf从字符串输入,scanf从stdin输入// 二者都支持简单的正则: (https://www.cnblogs.com/youthlion/archive/2009/06/21/1507586.html)string s1 = "notepad=v1.0.0.1001";char version_info[30];sscanf(s1.c_str(), "%*[^=]%*c%s", version_info); // v1.0.0.1001,%*c跳过一个字符,即“=v...”的=cout << version_info << endl;sscanf(s1.c_str(), "%*[^=]=%s", version_info);  // 同上, *是跳过,[]是正则内容,是前闭后开区间cout << version_info << endl;char name3[20];scanf("%*[^.]%s", name3); // 跳过第一个点号之前的内容,把第一个点号和之后的内容保存到name3,没输入点号就不停cout << "name3: " << name3 << endl;// cout << "转为string: " << string(name3);

转载于:https://www.cnblogs.com/dylanchu/p/11546456.html

你可能感兴趣的文章
[xampp] /usr/bin/env: php: No such file or directory
查看>>
细学PHP 10 贴吧-2
查看>>
黑客攻防入门秘籍
查看>>
Swift迎来了1.0 GM 版(2014.09.09)
查看>>
【iOS开发-68】APP下载案例:利用tableView自带的cell布局+缓存池cell复用时注意button状态的检查...
查看>>
《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本
查看>>
Java 编程下实现随机无重复数字功能
查看>>
Android 编程下的代码混淆
查看>>
animation属性
查看>>
页内的模块和组件抽象规划经验
查看>>
安全-分析深圳电信的新型HTTP劫持方式
查看>>
将Centos的yum源更换为国内的阿里云源
查看>>
git diff 的用法
查看>>
一段sql的优化
查看>>
十进制与十六进制的相互转换
查看>>
在Flex中用Validator检测数字、字符串、Email.
查看>>
[leetcode]4Sum
查看>>
POJ1062 昂贵的聘礼
查看>>
【零基础学习iOS开发】【02-C语言】08-基本运算
查看>>
Java 将指定字符串连接到此字符串的结尾 concat()
查看>>