java scanner getline,getline函数 - zhangyujsj的个人空间 - OSCHINA - 中文开源技术交流社区...

C++中的getline函数有两个:

1 是iostream类对象的成员函数

2 是一个全局函数

在C++中为了使用的方便,C++在标准库中添加了getline函数。

其实在C++中对不同的输入流对象都定义了一个getline函数,即:

std::fstream::getline

std::istream::getline

std::ifstream::getline

std::iostream::getline

std::wfstream::getline

std::wistream::getline

std::wifstream::getline

std::wiostream::getline

std::stringstream::getline

std::basic_fstream::getline

std::basic_istream::getline

std::istringstream::getline

std::wstringstream::getline

std::basic_ifstream::getline

std::basic_iostream::getline

std::wistringstream::getline

std::basic_stringstream::getline

std::basic_istringstream::getline

这儿我们讨论标准输入对象的getline函数,其他的对象的情都是类似的。

在头文件中声明了getline函数:

istream::getline

istream& getline (char* s, streamsize n );

istream& getline (char* s, streamsize n, char delim );

函数是C类型的数组。因为C++中允许对函数进行重载,所以可以有多个同名函数。delim参数是指定分隔符。如果不指定的话,默认使用'\n'

下面是一个例子:

void test1(){

char line[100];

while(cin.getline(line,100))

cout<

}

注意这儿的getline是要读入空白符。但是不包括最后的换行符。

C++中还定义了一个在std名字空间的全局函数,因为这个getline函数的参数使用了string字符串,所以声明在了头文件中了。

声明如下:

istream& getline ( istream& is, string& str, char delim );

istream& getline ( istream& is, string& str );

简单的示例如下:

void test2(){

string line;

while(getline(cin,line))

cout<

}

注意此处也是不读入换行符的。

所以在C++中读取一行的函数是不读入换行符的,而GCC中getline函数是读入换行符的。可以理解为,一般情况下不读入,特别的是GCC的读入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值