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简单编写的一个最简单贪吃蛇游戏
刚学OpenGL的时候,写的一个最简单的贪吃蛇游戏代码 如下: //贪吃蛇游戏 #include<stdio.h> #include<stdlib.h> #include< ...
- 转:使用Jazz Automation编写自动化测试
Jazz Automation介绍 Jazz Automation是一个测试框架,构建它的目的是为所有类型的Web系统或者静态网站自动化同时加速验收/功能测试.它还能够容易地实现自动化集成测试.以前的 ...
- ANDROID与.Net之间JSON实践
Asp.Net端: JsonHelper.cs using System.Runtime.Serialization.Json; using System.IO; using System.Text; ...
- didEndEditingRowAtIndexPath with nil indexPath
在UITableViewController中,通过滑动删除按钮删除一行,首先收到Table view data source call: tableView:commitEditingStyle:f ...
- JQuery的ready函数与JS的onload的区别详解
JQuery的ready函数与JS的onload的区别:1.执行时间window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行.$(document).ready()是DOM结构绘制 ...
- Java注解基本原理
注解目前非常的流行,很多主流框架都支持注解,而且自己编写代码的时候也会尽量的去用注解,一时方便,而是代码更加简洁. 注解的语法比较简单,除了@符号的使用之外,它基本与Java固有语法一致.Java S ...
- angularjs改变路由时控制器每次都执行两次
原因如下: 代码里面也初始化了控制器 模板配置了一个控制器
- mysql 数据库连接(远程和本地原理同样)
mysql 连接远程数据库的时候的格式 mysql -uuser -hhost -Pport -ppassword
- Robotium--通过Id寻找控件
在自动化测试中,UI上经常有一些控件是没有名称的,那么此时,就可以通过id来找到这些控件. 案例:对两个EditText进行测试 package com.tangbc.tedit.test; impo ...
- Dubbo[一个分布式服务框架
http://alibaba.github.io/dubbo-doc-static/User+Guide-zh.htm#UserGuide-zh-API%E9%85%8D%E7%BD%AE http: ...