问题标签 [istream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
177 浏览

c++ - 如何创建一个从输入流中读取下一个值的函子?

像这样的东西:

std::bind1st(std::mem_fun(&istream::get ??), cin). 这似乎对我不起作用。

编辑:

利用 :

0 投票
3 回答
324 浏览

c++ - istream_iterator:接受额外的输入

我不能让这该死的东西正常工作。问题是,如果我要输入 2 个数字,我实际上必须输入 3。有什么问题?

0 投票
2 回答
3424 浏览

c++ - 在 C++ 中没有临时变量的情况下从 istream 读取 1 行到字符串流?

是否可以在不使用 C++ 中的临时字符串变量的情况下从输入流中读取一行并将其传递给字符串流?

我目前做这样的阅读(但我不喜欢临时变量line):

0 投票
2 回答
1347 浏览

c++ - `std::istream::operator>>()` 可以接受像 stdio 的 %i 格式说明符这样的整数基数前缀吗?

当使用 scanf() 及其变体时,格式说明符%i将接受十六进制(前缀为“0x”)、八进制(前缀为“0”)或十进制(无前缀)的数据,例如字符串“0x10”、“020” ", 和 "16" 都转换为十进制值为 16 的整数。

这可以通过std::istream::operator>>格式化输入来完成吗?

使用>> i没有 i/o 操纵器的普通“0x10”被转换为零(或者更确切地说,前导 0 是,“x10”部分不被处理),“020”到 20。 和操纵器的hex行为分别类似于,oct和。我正在寻找一个像.dec%x%o%d%i

有趣的是,hex操纵器可能同时接受“0x10”和“10”转换为十进制的 16。

如果您想知道,我正在实现一个表达式求值器,并且我希望使用 C/C++ 前缀约定允许整数操作数为十六进制、八进制或十进制。当前的实现 usingsscanf()自动执行此操作%i,我很好奇是否可以将其修改为使用 iostream 而无需显式解析数字格式。

0 投票
4 回答
14579 浏览

c++ - C++:ifstream::getline 问题

我正在阅读这样的文件:

仅出于测试目的,我的文件只有一行,末尾有一个空格:

我的代码首先成功读取了 12345。但随后不是循环结束,而是读取另一个字符串,这似乎是一个返回/换行符。

我已将我的文件保存geditnano. 而且我也用linuxcat命令输出过,最后没有返回。所以文件应该没问题。

为什么我的代码读取返回/换行符?

谢谢。

0 投票
5 回答
32907 浏览

c++ - istream::getline 返回类型

istream::getline方法返回什么?

我之所以问是因为我已经看到要遍历文件,应该这样做:

什么被退回?

0 投票
1 回答
887 浏览

c++ - istream 的tellg/seekg 无法防止堆栈粉碎(g++)?

对于我正在编写的程序,计算文件大小对我很有用,我使用 iostream 的 tellg 和 seekg 函数来计算,但这会导致 -Wstack-protector 发出警告。以下代码重现了“问题”:

g++(标志:-fstack-protector -Wstack-protector,编译器版本:4.4.3(Ubuntu 4.4.3-4ubuntu5),系统:Ubuntu 10.04 x86_64)给出警告:

f.cc:在函数'std::streamsize get_file_size(std::ifstream&)'中:
f.cc:12:警告:不保护函数:没有至少 8 字节长的缓冲区

(当我使用直接从 GNU 下载和编译的 GCC 4.5.2 时,我得到了相同的结果。)

这是从堆栈粉碎保护的工作方式(通常或通过 GCC)和/或 ifstream 和 seekg/tellg 的工作方式中预期的吗?如果是这样,这个警告不能被忽略还是有更好的办法吗?

编辑

实际上,上面的一些代码是多余的。只是为了澄清发生了什么:

导致 g++(与上述相同的规格)警告:

main.cc:在函数 'void f1(std::ifstream&)' 中:
main.cc:6:警告:不保护函数:没有至少 8 字节长的缓冲区
main.cc:在函数 'void f2(std::ifstream& )':
main.cc:10: 警告:没有保护功能:没有至少 8 字节长的缓冲区

有趣的是,f3不会触发警告。

0 投票
3 回答
779 浏览

stl - 将 istream 中的一行单词转换为向量的最简单方法?

istream>>运算符,但它会像跳过空格一样跳过新行。如何仅将 1 行中的所有单词列表放入向量(或任何其他方便使用的内容)中?

0 投票
1 回答
1988 浏览

delphi - 从 OleVariant 获取 IStream

我正在使用 Delphi 和 WinHTTP 执行 HTTP 请求以从 Internet 下载一些文件,并且我可以执行请求,但我不知道如何从从ResponseStream. 我花了很多时间在谷歌上搜索,但我不知道该怎么做。这是我尝试过的:

但我得到了错误[DCC Error] main.pas(45): E2015 Operator not applicable to this operand type(第 45 行是instream := req.ResponseStream as IStream;)。

如何从 OleVariant 中吓跑 IStream?

0 投票
3 回答
6300 浏览

c++ - 使用 istream 读取空终止字符串的最简单方法?

我有一个 istream,我需要准确读取特定数量的字节,但我不知道它的长度。它是空终止的。我在想我可以 1)写一个循环并一次读取一个字节 2)告诉它返回一个缓冲区或字符串,从现在开始直到某个字节(在这种情况下为 0)。或 3) 一次准确地读入一个字节并检查它是否为 0,如果不是,则将其附加到字符串中。

第三个我知道我可以做到,但其他两个听起来像是 istream 可能(在这种情况下是文件流)。我仍在阅读 istream 的文档。有很多。