getline的问题
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream in("FillString.cpp");
string s, line;
while(getline(in, line))
s += line + "\n";
cout << s;
}
getline 不是将丢弃换行符而不把它存入string对象吗?为什么遇到文件中的空行,
getline(in,line)的返回值也为true呢?
问题点数:50、回复次数:6Top
1 楼lemon520(喷血)回复于 2003-10-03 13:11:07 得分 30
getline(in,line) //读取in对象,向line插入字符,包括空格,直到遇到分割符(可选的第三个参数,如getline(in,line,'\n') ),文件结束,或string对象达到最大值,则返回false
由于getline(in,line) 没有第三个参数,所以只要不是文件尾、string没有达到最大值,总是返回trueTop
2 楼iawk(王卡)回复于 2003-10-03 13:36:11 得分 0
没用第三个参数的话,getline为什么会丢弃换行符呢?Top
3 楼ywchen2000(灌水大帝:努力奋斗)回复于 2003-10-03 14:22:25 得分 20
studyTop
4 楼lemon520(喷血)回复于 2003-10-03 17:55:58 得分 0
没有丢弃呀!
不是照原样输出吗!Top
5 楼lemon520(喷血)回复于 2003-10-03 18:25:49 得分 0
哦!错了!
的确丢弃了!我也搞糊涂了!
听课!Top
6 楼lemon520(喷血)回复于 2003-10-03 18:45:41 得分 0
返回值不是真或假,而是一个对象,对象存在,while语句条件为真Top




