istream停在\ n

时间:2010-05-13 02:38:27

标签: c++ newline istream

有没有任何方法可以告诉istream继续前进,直到它击中\ n而不是正常的空格并且不使用getline并且还在流中保留任何格式选项?

感谢。

1 个答案:

答案 0 :(得分:5)

std::getline()出了什么问题?无论如何,编写自己的函数怎么样:

#include <iostream>
#include <iterator>

template<class In, class Out, class T>
Out copy_until(In first, In last, Out res, const T& val)
{
    while( first != last && *first != val ) *res++ = *first++;
    return res;
}

// ...    
std::string line;
copy_until(std::istreambuf_iterator<char>(std::cin),
           std::istreambuf_iterator<char>(),
           std::back_inserter(line), '\n');
std::cout << line << std::endl;

该函数将使用换行符,但不会将其放在输出中。