由于自己在分割字符串和读取行中内容时总是碰到,这里把一起整理一下。
getline()函数用于读入一整行数据,一种定义在头文件<istream>中,是istream的成员函数,一种定义在头文件<string>中,是普通文件。
1)<istream>中的两种重载形式
istream& getline(char* s, streamsize n);
istream& getline(char* s, streamsize n, char delim);
作用是: 从istream中读取至多n个字符(包含结束标记符)保存在s对应的数组中。即使还没读够n个字符,如果遇到delim标识符或字数达到限制,则读取终止。delim标识符会被读取,但是不会被保存进s对应的数组中。注意,delim标识符在指定最大字符数n的时候才有效。
2)<string>中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中。
is:表示一个输入流,例如cin。
str:string类型的引用,用来存储输入流中的流信息。
delim:char类型的变量,所设置的截断字符;在不自定义设置的情况下,遇到'\n',则终止输入。(默认为回车,还可以是别的符号,如#,*之类的都可以)