8得票2回答
C++ While( cin >> x) 这个语句是如何工作的?

我的问题是,如何实现: while(cin>>x) { //code } 工作。更具体地说,有哪些代码会停止循环? 根据这里的文档,看起来 >> 操作符返回一个 &istream。那么,如果读取失败或者到达文件结尾,它不仅会设置 eofbit、...

8得票4回答
libc++和libstdc++之间的istream结束符(eof)差异

以下(玩具)程序在链接到libstdc++和libc++时返回不同的结果。这是libc++中的一个错误还是我没有理解如何使用istream的eof()函数?我已经尝试在Linux和Mac OS X上使用g++以及在Mac OS X上使用clang,有和没有使用-std=c++0x参数都尝试过。...

9得票2回答
我该如何查找从std :: istream中可用的字节数?

如果我想要将 std::istream 的内容读取到缓冲区中,我需要先找出有多少数据可用来确定缓冲区的大小。为了从 istream 中获取可用字节数,我目前正在执行以下操作: std::streamsize available( std::istream &is ) { st...

7得票2回答
当输入的行结束符混合时,std::getline的替代方案

我正在尝试从std :: istream中读取行,但输入可能包含'\r'和/或'\n',因此std :: getline 无法使用。 抱歉大声喊出来,但这似乎需要强调...... 输入可能包含换行符类型或两者都包含。 有没有标准的方法来解决这个问题?目前我正在尝试。 char c; w...

7得票1回答
如何为自定义的istream/streambuf实现seekg()函数?

我在十年前是一名C++专家,但过去十年我一直在编写Java程序。我刚刚开始一个使用小型第三方XML解析器的C++项目。XML解析器接受STL istream。我的XML数据来自Windows COM IStream。我想我应该做正确的事情,创建一个适配器,将IStream数据取出并通过istr...

8得票1回答
libc++和libstdc++中istream的operator>> (double& val)之间的差异

最近我升级到Mac OS X 10.9,其默认的标准C ++库从libstdc++更改为libc ++。从那以后,我在下面的代码示例中观察到stringstream运算符>>(double)的意外行为。 总的来说,当双精度值后跟一个字母时,libc ++似乎在从字符串流中提取双精...

11得票2回答
难道 istream::peek() 不应该总是返回你刚刚放回的内容吗?(涉及 IT 技术并且是一个提问标题)

从C++规范来看,直觉上我认为istream::putback(c)应该总是安排输入缓冲区,以便下一次调用istream::peek()读取字符c。这不正确吗?我问这个问题是因为随附于Xcode 4.6的最新版本的libc++在某些情况下似乎没有强制执行这种行为——特别是当最后一个字符在EOF...

7得票3回答
寻找cin和ifstream的流结束位置?

我正在运用一本C++教科书作为C++编程的复习。其中一个练习问题(不想过多解释)要求我定义一个函数,该函数可以将ifstream或cin(例如,istream)作为参数传递。然后,我必须读取流。问题是,我无法找到一种方法使这个函数使用cin和ifstream有效地查找流的末尾。换句话说, w...

9得票1回答
为什么对于complex<double>类型的operator>>,如果遇到EOF不会设置eofbit?

我正在尝试从文件(或任何std :: istream)中读取尽可能多的std :: complex 。如果操作失败,我会检查ios :: eof()。如果它没有被设置,我会假设在解析数据时出现了错误,并且可以向用户报告输入文件存在错误。这个方案适用于double,但是在复数上却失败了。为什么?...

10得票2回答
如何将 istream * 转换为字符串或直接打印它?

下面是Connector/C++的一个函数,它返回一个istream*类型的值。如果我试图直接打印它,会显示十六进制或内存地址,因为它是一种指针类型。 istream *stream = res-&gt;getBlob(1); 我尝试使用以下方法读取并打印它: string s...