【发布时间】:2011-12-15 07:49:19
【问题描述】:
我正在下面编写一个 getline 函数,但我希望分隔符是两个连续的换行符,这样函数在到达 blank 行时停止读取。
in.getline(temp, 127, delimiter);
getline 可以做到这一点吗?
【问题讨论】:
我正在下面编写一个 getline 函数,但我希望分隔符是两个连续的换行符,这样函数在到达 blank 行时停止读取。
in.getline(temp, 127, delimiter);
getline 可以做到这一点吗?
【问题讨论】:
不,但是一个 simple(不像我一开始想的那么简单)循环就可以了。
std::string s, temp;
while (std::getline(in, temp, delimiter) && !temp.empty())
s += temp, s += delimiter;
if (!s.empty())
s.resize(s.size() - 1) // or s.pop_back() if C++11
【讨论】:
s += temp + '\n';
istream::getline 的分隔符必须是单个字符。但是,您始终可以自己缓冲结果,检查下一个字符 (peek) 以查看其是否为换行符。
【讨论】: