C++ 获取一行字符串
发布时间
阅读量:
阅读量
getline() 是 istream 类的成员函数,它有如下两个重载版本:
istream & getline(char* buf, int bufSize);
istream & getline(char* buf, int bufSize, char delim);
第一个版本从输入流捕获长度为bufSize-1的字符块到缓冲区buf,并在遇到换行符$\n$之前完成此操作(优先满足哪一个条件即采用哪一个条件)。函数会在buf中自动补充一个结束标记$\0$。
第二个版本和第一个版本的区别在于, 第一个版本处理到换行符\’为止, 在此之后不会将换行符或分隔符保留在缓冲区中; 而第二个版本则会处理到指定分隔符\’为止, 并将这些分隔符移出输入流加入缓冲区.
这两个函数的返回值相当于它们所作用的对象引用关系。当输入流中\n字符或其他分隔符前的有效字符数量至少与bufSize相当时,则会导致无法正确读取数据的情况发生:尽管本次数据读取已完成但后续的数据读取操作将无法成功执行。
从输入流中获取一行内容,并采用第一种方法进行处理。然而,在使用 cin >> str 这种方式时会遇到问题:一旦遇到行中的空格或制表符就会停止读取,并且这种方法无法确保所读取的str变量包含整行内容。
第一个版本的 getline 函数的用法示例如下:
``
全部评论 (0)
还没有任何评论哟~
