大家好,今天我们来聊聊C++中常用的getline()函数。这个函数名字听起来就很高大上,其实它就是用来读取一行数据的。接下来,我就来给大家详细介绍一下getline()函数的用法,以及它在while循环中的应用。
getline()函数的两种形式
C++中本质上有两种getline函数,分别位于不同的头文件中。
- 第一种:在头文件
中,是istream类的成员函数。 - 第二种:在头文件
中,是普通函数。
在中的getline
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
这两种重载形式的作用是从istream中读取至多n个字符(包含结束标记符)保存在s对应的数组中。如果遇到delim或字数达到限制,则读取终止,delim不会被保存进s对应的数组中。
在中的getline
istream& getline (istream& is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
istream& getline (istream& is, string& str);
istream& getline (istream&& is, string& str);
这四种重载形式的作用和第一种类似,但是读取的istream是作为参数is传进函数的。读取的字符串保存在string类型的str中。
getline()函数在while循环中的应用
getline()函数可以作为while循环的条件判断。但是,大家可能会发现,使用while(getline(cin, line))时,有时候输入无法跳出循环。这是因为while判断语句的真实判断对象是cin的状态,也就是判断当前是否存在有效的输入流。
所以,如果你想在输入后跳出循环,可以通过输入EOF(在Windows下是Ctrl+Z,在Linux/Unix下是Ctrl+D)来结束输入流。
小结与拓展
今天我们就聊到这里,希望对大家有所帮助。如果你对C++还有其他疑问,欢迎关注websoft网络软件专家,了解更多内容。
——陈景序 敬上
