正在检查ignore()中的值 当你在C++中使用IGENORE()时,有没有方法检查那些被忽略的值?我基本上是在读一些字符,想知道我是忽略了文本中的普通字符,还是先得到了换行符。谢谢。

正在检查ignore()中的值 当你在C++中使用IGENORE()时,有没有方法检查那些被忽略的值?我基本上是在读一些字符,想知道我是忽略了文本中的普通字符,还是先得到了换行符。谢谢。,c++,stream,ignore,C++,Stream,Ignore,我不这么认为-你得“自己滚” 换句话说,我认为您必须使用get()编写一些从流中读取的代码,然后添加一些逻辑来保留所需内容并忽略其余内容(同时检查您忽略的内容) 如果为ignore()提供可选的delim参数,则它可以在换行时停止: streampos old = is.tellg(); is.ignore(num, '\n'); if (is.tellg() != old + num) { // didn't ignore "num" characters, if not eof or

我不这么认为-你得“自己滚”


换句话说,我认为您必须使用
get()
编写一些从流中读取的代码,然后添加一些逻辑来保留所需内容并忽略其余内容(同时检查您忽略的内容)

如果为
ignore()
提供可选的
delim
参数,则它可以在换行时停止:

streampos old = is.tellg();
is.ignore(num, '\n');
if (is.tellg() != old + num) {
    // didn't ignore "num" characters, if not eof or error then we
    // must have reached a newline character.
}
但是有一个障碍-当
ignore()
点击分隔符时,它也会忽略这一点。因此,如果您正好在忽略字符集的末尾点击分隔符,则
tellg()
将返回
old+num
。抱歉,无法判断最后一个被忽略的字符是否是分隔符。也无法指定不是单个字符的分隔符


我也不知道这是否和什么时候可能比仅仅读取
num
字节并搜索换行更快。我最初的想法是,“在
ignore()
read()
之间,哪一部分的区别是不明显的?”;-)

如果您实际上不想忽略字符,请不要使用
ignore()
提取字符。可以执行相同的工作,但也可以存储提取的字符,以便以后可以检查它们