get()和getline()

来源:百度知道 编辑:UC知道 时间:2024/05/15 19:32:35
以下是我的理解,不知道对不对。。。。
假设输入"123456\n"
get()接收了"123456",同时末尾加'\0','\n'没有读入且仍存在于缓冲区中。
getline()接收了"123456\n",把末尾的'\n'置为'\0',缓冲区中没有数据

不知道你是学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回车”,因为是string类型,所以结尾没有\0,所以getline()也不会吧\n置为\0,缓冲区内也没有数据

如果你说的是cin.getline()
cin.getline()实际上有三个参数,cin.getline(接受的字符串,接受个数,结束字符) 当第三个参数省略时,系统默认为'\0' ,而且缓冲区中扔有数据

不知道你说的get()是什么函数,标准C和C++应该没有这个函数吧。
而getline()是收取回车符的。在回车符后加上'\0'
如以下程序(在linux环境下编译通过,gcc version 3.4.6 20060404 (Red Hat 3.4.6-3))

int main()
{
FILE* fp;
fp=fopen("a.C","r");
char *buff;
size_t *len;
*len=1024;
getline(&buff,len,f