问题标签 [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 回答
2538 浏览

c++ - 单链表 C++ ostream 和 istream -- 输出内存地址

我对此真的很陌生,现在正在学习单链表。我正在写一些代码,但我真的很困惑。我正在尝试编写读取方法和写入方法。我有一个我无法更改的测试工具。我只想能够读取流并输出流,这样它就不会返回内存地址。

谁能以非常简单的方式解释并帮助我修复此代码?

并在头文件中

谢谢你!

0 投票
3 回答
364 浏览

c++ - MSVC istream 实现锁定缓冲区

我正在处理一些现有代码,这些代码正在反序列化存储在文本文件中的对象(我可能需要阅读数千万个这些对象)。文件的内容首先被读入 a wstring,然后它wistringstream从中生成 a 。在程序上运行 Very Sleepy 分析器表明它在以下调用堆栈中花费了大约 20% 的时间:

和类似的std::_Mutex::_Unlock。我正在使用 Visual C++ 2008。

往里istream看,我看到它构造了一个在底层调用和方法的sentry对象。这反过来只是调用和与该缓冲区关联的一个。然后定义如下:_Lock_Unlockbasic_streambuf_Lock_Unlock_Mutex

看起来 _MULTI_THREAD 设置yvals.h

现在,我知道永远不会有另一个线程尝试访问此缓冲区,但在我看来,在使用标准 iostream 时无法绕过此锁定,这看起来既奇怪又令人沮丧。我错过了什么吗?有解决方法吗?

0 投票
1 回答
227 浏览

c++ - Istream 最多消耗 N 个空格字符

在应用运算符>>时,是否可以告诉 std::istream 仅使用固定数量(即 1)的空白字符?我有一个要解析为参数的字符串,但有些参数是空的,这导致对 operator>> 的后续调用失败。

0 投票
1 回答
6861 浏览

c++ - istream >> ostream << 使用 * 指针重载运算符

如果 >> 和 << 运算符正在处理指针,我将如何重载它们?

在标题中:

在 cpp 中:

0 投票
1 回答
3393 浏览

c++ - 如何使用 libjpeg 从 std::istream 读取 JPEG?

FILE*libjpeg 可以从一个或一个缓冲区中读取 JPEG 数据。我的数据来自std::istream. 我可以将整个内容读入缓冲区以与 libjpeg 一起使用,但如果可能std::istream的话,我宁愿让 libjpeg 直接从其中读取。std::istream如何才能做到这一点?

0 投票
1 回答
1142 浏览

c# - PInvoke 和 IStream

我有一个从用 c++ 编写的 dll 导出的函数,具有以下签名:

它返回一个内存流,显然它的大小。我遇到的困难是为导出的函数创建签名,然后尝试在 C# 中读取流。在某一时刻能够使用“不安全”字节指针来获取信息,但这不符合我们的要求。

任何想法、示例、示例等将不胜感激。

0 投票
2 回答
12953 浏览

c++ - 如何将 istream 与字符串一起使用

我想将文件读入字符串。我正在寻找不同的方法来有效地做到这一点。

使用固定大小的 *char 缓冲区

我收到了Tony 的回答,它创建了一个 16 kb 缓冲区并读入该缓冲区并附加缓冲区,直到没有更多内容可读取。我了解它是如何工作的,而且我发现它非常快。我不明白的是,在该答案的评论中,据说这种方式将所有内容复制了两次。但据我了解,它只发生在内存中,而不是磁盘中,所以几乎不引人注意。它从缓冲区复制到内存中的字符串是否有问题?

使用 istreambuf_iterator

我收到的另一个答案使用 istreambuf_iterator。代码看起来很漂亮而且很小,但是速度非常慢。我不知道为什么会这样。为什么那些迭代器这么慢?

使用 memcpy()

对于这个问题,我收到了我应该使用 memcpy() 的评论,因为它是最快的本机方法。但是如何将 memcpy() 与字符串和 ifstream 对象一起使用?ifstream 不应该使用自己的读取功能吗?为什么使用 memcpy() 会破坏可移植性?我正在寻找与 VS2010 以及 GCC 兼容的解决方案。为什么 memcpy() 不能与这些一起使用?

+ 还有其他有效的方法吗?

对于小于 10 MB 的小二进制文件,您推荐什么,我使用什么外壳?

(我不想将这个问题分成几部分,因为我对如何将 ifstream 读入字符串的不同方式之间的比较更感兴趣)

0 投票
4 回答
1838 浏览

c++ - 通过函数打开流

我需要有关 s 的不可复制性质的帮助[io](f)stream

我需要在fstreams 周围提供一个 hackish 包装器,以便在 Windows 上处理文件名中包含 unicode 字符的文件。为此,我设计了一个包装函数:

当然,这std::swap条线是罪魁祸首。我也尝试从函数返回流,但它会导致同样的问题。a 的复制构造函数std::istreamdeleted。我也尝试过std::move,但没有帮助。我该如何解决这个问题?

编辑:Keep It Simple (TM)感谢@tibur 的想法,我终于找到了一个很好的方法,但又很实用。从某种意义上说,它仍然是骇人听闻的,因为它取决于所使用的 Windows 标准 C++ 库,但由于只有两个真正的库在使用,所以对我来说这不是问题。

在用户代码中:

这取决于 C++0x<memory>auto关键字。当然,您不能只close使用结果stream变量,但 GNU Libstdc++std::istream析构函数确实负责关闭文件,因此在任何地方都不需要额外的内存管理。

0 投票
1 回答
547 浏览

ios - 如何通过 TCP 将 IplImage 从服务器发送到 iPod 客户端 UIImage

我在 linux 中有一个使用Berkeley_sockets的服务器,我创建了一个与 iPod 客户端的 TCP 连接。我有一个IplImage* img;要从服务器发送到 iPod。我使用write(socket,/*DATA*/,43200);命令,我尝试发送的数据是reinterpret_cast<char*>(img)imgimg->imageData。所有这些选择实际上都发送任何类型的数据。

在 iPod 端,我以这种方式接收数据(正如我在 SO 中看到的那样。不要介意复杂的东西,它只是用于从单个图像接收所有数据。):

收到整个图像后,我有这个:

现在..我知道我可以让 openCV 在 iPod 上工作,但我找不到关于如何让它工作的简单解释,所以我使用了这个网页的第二个代码并对其进行了调整,因为我知道所有规格我的图像(例如,我设置了CGImageCreate()函数中的所有变量。):

}

问题:当我显示图像时,我得到它完全奇怪和“随机”,即使发送的图像总是相同的。我真的不知道怎么了。。

PS:TCP 连接与其他数据(如数字或单词)一起工作正常。并且图像是灰度的。

感谢所有的帮助。

0 投票
2 回答
6555 浏览

c++ - 如何找出 std::istream 中有多少字节可用?

如果我想将read()a 的内容std::istream放入缓冲区,我必须先找出有多少可用数据才能知道缓冲区的大小。为了从 istream 中获取可用字节数,我目前正在执行以下操作:

同样,由于 std::istream::eof() 不是一个非常有用的基金 AFAICT,要找出istream' 的 get 指针是否在流的末尾,我这样做:

我的问题:

有没有更好的方法从 获取可用字节数istream?如果不在标准库中,也许在 boost 中?