C++中getline函数的使用
代码:
#include <iostream>
#include <cstdio> using namespace std; int main(){ char* s;
s = new char[]; //必须要分配空间
cin.getline(s,);
int i = ;
while(s[i] != '\0'){
cout<<s[i];
i++;
}
cout<<endl<<i<<endl;
cin.clear(); //当failbit位为1时需要clear,否则后面的getline读取为空字符串 string str;
getline(cin,str);
cout<<str<<endl;
getline(cin,str,'#');
cout<<str<<endl;
getline(cin,str);
cout<<str<<endl; return ;
}
输入输出:
(input)slkdsa;34
slkd
4
sa;34
(input)hel#id
hel
id
分析:
C++中有两个getline函数,一个是在string头文件中,定义的是一个全局的函数,函数声明是istream& getline ( istream& is, string& str, char delim )与istream& getline ( istream& is, string& str );
另一个则是istream的成员函数,函数声明是istream& getline (char* s, streamsize n )与istream& getline (char* s, streamsize n, char delim );注意第二个getline是将读取的字符串存储在char数组中而不可以将该参数声明为string类型,因为C++编译器无法执行此默认转换。
getline函数大致流程:
1、首先判断istream的failbit位是否为1,为1的话意味着输入流的状态有错误,则不进行读操作,getline函数结束执行
2、从当前位置开始从输入流中依次读取单个字符并拷贝到缓冲区,直到遇到下列条件满足时,循环结束。
(1)遇到文件尾时停止读操作,并设置流对象的结束标记为1
(2)读到调用者指定的分隔符时,此时将分隔符之前的字符拷贝到缓冲区中,但分隔符本身不拷贝进去,并且下次读操作将从分隔符后的下一个字符开始。
(3)已经读了n-1个字符(n是调用者传入的第二个实参_Count的初值),此时要把流对象的错误标志位置1
利用getline连续读取直至文末
#include <iostream>
#include <cstdio> using namespace std; int main(){ string s;
while(getline(cin,s)){
cout<<s<<endl;;
} return ;
}
C++中getline函数的使用的更多相关文章
- string类中getline函数的应用
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- C++中getline()函数简介
有时我们希望能在最终得到的字符中保留输入时的空白符,这时应该用getline()函数代替原来的>>运算符. 下面是使用getline读取一整行的示例代码: #include<iost ...
- C/C++中的getline函数总结:
来自:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html C/C++中的getline函数总结 getline函数是一个比较 ...
- [转]C++中cin、cin.get()、cin.getline()、getline()函数的简单总结
参考原文:http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html,另外做了一些修改~ 1.cin 2.cin.get() 3 ...
- getline函数彻底说明
因为之前每次使用这个函数都要在网上查一遍,觉得很麻烦,这次就认真地整理一下,希望写完之后就记住. getline函数其实有两个: 一个是全局函数,include<cstring>, 原型是 ...
- getline()函数
这是一篇关于getline()函数的博客,以总结对输入输出流的掌握,不再在这些问题上栽跟头~ -------------------------- 1.首先我们知道,getline()函数的基本作用, ...
- C++: getline函数
转自http://blog.sina.com.cn/s/blog_60263c1c0101ck25.html 学习C++的同学可能都会遇到一个getline()函数,譬如在C++premer中,标准s ...
- C++学习46 getline()函数读入一行字符 一些与输入有关的istream类成员函数
getline函数的作用是从输入流中读取一行字符,其用法与带3个参数的get函数类似.即 cin.getline(字符数组(或字符指针), 字符个数n, 终止标志字符) [例13.7] 用get ...
- Linux下的getline函数
最近在做国嵌的mp3项目,在mp3主控程序中用到了这个函数,挺好使的,在这里记录一下.注意是linux下的,不是C++中的. 函数原型 ssize_t getline(char **lineptr, ...
随机推荐
- OpenGl学习总结
http://wenku.baidu.com/view/5305fe4f866fb84ae45c8dcd.html
- 【转】Android理解:显式和隐式Intent---- try catch
原文网址:http://blog.csdn.net/xiao__gui/article/details/11392987 Intent是Android初学者比较难理解的一个东西.我这里以通俗易懂的语言 ...
- python摘抄
核心模块: random 当你的程序需要随机数功能时,random 模块就能派上用场.该模块包含多个伪随机数发生器,它们均以当前的时间戳为随机数种子.这样只要载入这个模块就能随时开始工作.下面列出了该 ...
- 跑马灯js
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 解决Chrome无法加载Shockwave Flash
Shockwave Flash 是 Adobe Flash Player下的一个小插件,你可以在Google商店中找到并下载. 通常来讲,Shckwave Flash会在安装Flash Player的 ...
- LeetCode (10): Regular Expression Matching [HARD]
https://leetcode.com/problems/regular-expression-matching/ [描述] Implement regular expression matchin ...
- 尚学堂 JAVA Day3 概念总结
java中的运算符 1.算术运算符 + - * / % Arithmetic operators + 运算符有三种身份 Additive Operator 1)加法:如 a + b; 2)连接:如 “ ...
- Appium 环境搭建
1.安装nodejs 下载地址: http://nodejs.org/download/ 下载之后一路next就好. 验证是否安装成功: node -v
- MARCHdesign_王濤's 星云个人网站 | www.xingyun.cn/MARCHdesign
MARCHdesign_王濤's 星云个人网站 | www.xingyun.cn/MARCHdesign MARCHdesign_王濤
- java:利用数组实现将古诗词纵向输出
java:利用二维数组实现将古诗词纵向输出. 从网络上随便搜索一首古诗词,这里刻意选择句子长短不一的诗词 1.首先先把诗词放进一个二维数组中. 这里将数组类型定义成char 类型,因为将其定义为S ...