get()和getline()

[复制链接]
查看11 | 回复3 | 2016-8-16 01:14:53 | 显示全部楼层 |阅读模式
以下是我的理解,不知道对不对。。。。
假设输入"123456\n"
get()接收了"123456",同时末尾加'\0','\n'没有读入且仍存在于缓冲区中。
getline()接收了"123456\n",把末尾的'\n'置为'\0',缓冲区中没有数据

回复

使用道具 举报

千问 | 2016-8-16 01:14:53 | 显示全部楼层
不知道你是学C的还是学C++的…… C和C++中都没有get(),如果你说的是gets()的话: gets()是C中的函数,括号内的参数是char字符串的首地址 假设输入 “123456回车”,gets函数会在char字符串最后加上\0,\n的确没有读入,但它也不在缓冲区里 不信的话你可以试试char a[10];gets(a);getchar();printf("ok"); 如果你说的是cin.get(),接收了"123456",同时末尾加'\0','\n'没有读入仍存在于缓冲区中 getline()是C++中的函数,使用方法getline(cin, str)其中str是string类型 同样输入“123456...
回复

使用道具 举报

千问 | 2016-8-16 01:14:53 | 显示全部楼层
yeah.get在你有足够的空间的情况下,默认遇到'\n'会停止,且在已读入字符串后加'\0',但'\n'还老实地在缓冲区。getline会忽略缓冲区开始的空白符和以后的'\n',但已将其从缓冲区取出了。...
回复

使用道具 举报

千问 | 2016-8-16 01:14:53 | 显示全部楼层
不知道你说的get()是什么函数,标准C和C++应该没有这个函数吧。而getline()是收取回车符的。在回车符后加上'\0'如以下程序(在linux环境下编译通过,gcc version 3.4.6 20060404 (Red Hat 3.4.6-3))int main(){
FILE* fp;
fp...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行