问题标签 [iostream]

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 投票
1 回答
1442 浏览

c++ - 为什么 std::istream 不承担对其 streambuf 的所有权?

我正在为 CRI Middleware 的 ROFS 之类的视频游戏编写某种虚拟文件系统库(请参阅Wikipedia)。我使用库的目的是提供访问我开发的游戏资源的自然方式,其中存储了一些嵌入在可执行文件中的数据,一些在媒体上,一些在本地用户的硬盘驱动器上(首选项,保存游戏文件等) .

访问这些资源应该像拨打电话一样简单

实际的做事方式实际上是不同的,另外一个抽象层用于后台加载,但这并不重要。

我想知道的是,考虑到与关联的被销毁时它不会被它删除,我怎么能返回它auto_ptr<>(或者,你选择)。unique_ptr<>std::streambuf<>std::[i/o]stream<>

我正在考虑std::[i/o]stream<>不承担在构造时传递给它的 streambuf 的所有权,因为构造函数不存在所有权语义的转移,并且 Apache 的 STDCXX 参考没有提到所有权的转移(我发现的任何 stdlib 参考也没有在网上)。

我有什么选择?我还不如返回一个共享指针并继续观察它,直到 FSlib 管理器保留共享指针的唯一副本,在这种情况下,它会破坏其唯一副本以及 streambuf。考虑到图书馆的组织模型,这是很实用的,但这不是很优雅,也不是很有效。

我试过看一下 Boost.Iostreams,但对我来说,情况似乎更糟,因为流本身的设备类型与其类型密切相关(流的设备必须在其模板参数中定义)。这个问题似乎使我的库无法使用 Boost.Iostreams,因为它需要抽象出流的具体“源/接收器”实现,以便可以无缝地使用流来打开位于可执行文件本身内部的文件,例如,在系统文件系统的文件中或归档类型文件中。

我可以编写一个容器类来处理这些问题,但我宁愿做得更干净(即已经返回流;这就是它应该需要的全部!;)。

建议?

0 投票
3 回答
8906 浏览

java - JOGL 的纹理加载

我一直在尝试加载 bmp 图片以在我的程序中将其用作纹理我使用了一个IOStream类来扩展DataInputStream以使用此代码读取照片上的像素,该代码基于 C++ 的纹理加载器代码:

和 IOStream 代码:

和调用:

调试后我发现当涉及到这一行时:

发生IOExeption了,这是DispatchException什么意思,我该如何解决?

我尝试过了:

  1. 使用\and\\/and//
  2. 更改照片的路径,然后将所有路径从c:\photoname.bmp
  3. 使用数字重命名照片,例如1.bmp

没有工作。

0 投票
7 回答
1847 浏览

c++ - 什么时候最好在 ReadFile、WriteFile、fprintf 等上使用 c++ iostreams?

我发现在 c++ 中使用流比使用 ReadFile、WriteFile 等甚至 fprintf 等 Windows 函数要容易得多。什么时候不适合使用流?什么时候最好使用流?使用流安全吗?为什么很多程序员不使用流?

这只是我一直想知道的事情,也许您可​​以从中汲取一些智慧。

0 投票
6 回答
793 浏览

c++ - 为什么 endl 被用作“\n”的同义词,即使它会导致显着的性能损失?

这个程序:

当时间像这样:

执行需要 15.4 秒的实时时间。用这个替换输出行:cout << i << ": " << msg << endl;你最终会得到这样的结果:

如您所见,运行时间增加了一倍多,程序从在操作系统中花费的时间最少到在操作系统中花费了将近一半的时间。

该程序的两个版本具有相同的输出,并且由标准保证在每个平台上具有相同的输出。

鉴于此,为什么人们坚持使用endl作为同义词'\n'?

编辑: 如果不是很明显,这个问题旨在成为一个引导性问题,并用于教学目的。我知道为什么存在性能损失。

0 投票
2 回答
12533 浏览

c++ - C++:将 cin 分配给 ifstream 变量?

您知道stdin由“-”文件名指定的常见 stdio 习惯用法,例如

ifstream使用实例执行此操作的最佳方法是什么?我收到了一些ifstream作为类的一部分的代码,我想添加代码来做同样的事情,比如:

0 投票
3 回答
3297 浏览

c++ - iostream 使用 << 构造字符串

<< 怎么可以用来构造字符串ala

0 投票
4 回答
4325 浏览

c++ - C++ - 将 std::ostream 传递给函数

我想到了 C++ 中的一个小型调试内联函数:

这是我想如何使用它的一个例子:

但是它不能按我计划的方式工作 - 我希望它仅在详细级别高于或等于传递给函数的调试级别时打印消息,但似乎它每次都会打印,无论调试级别如何,所以数据会保留在 cout 缓冲区中。到目前为止,我认为这个函数不是我最近想到的最好的主意,但我仍然想知道是否有办法清除与 cout、cerr 等相关的缓冲区。是否有可能让这种函数正常工作?

0 投票
7 回答
14153 浏览

c++ - std::endl 的重载处理?

我想定义一个类MyStream,以便:

给出输出

基本上,我想在前面插入一个“[blah]”,然后在每个非终止 std::endl之后插入?

这里的困难不是逻辑管理,而是检测和重载std::endl. 有没有一种优雅的方式来做到这一点?

谢谢!

编辑:我不需要关于逻辑管理的建议。我需要知道如何检测/重载打印std::endl.

0 投票
3 回答
6710 浏览

c++ - 在 C++ 中声明通用 istream

我需要编写一个从 ifstream 或 cin 读取的程序,具体取决于在运行时传递给程序的参数。

我打算做以下事情:

但是,istream 在受保护,我不能在其中声明 istream。有没有办法在流中声明这样的泛型?

0 投票
2 回答
5300 浏览

c# - 使用 TFS SDK 从 TFS 获取所有文件夹

我正在创建一个 TFS 工具,它将从 TFS 服务器获取“变更集信息”。

现在,我想提供一个“TFS 浏览器”,以便用户可以浏览他想要从中获取信息的“分支/文件夹”。

我正在使用 TreeView 控件和GetItems函数从 TFS 获取项目的路径:

下面的代码演示了从节点单击“展开”按钮后,应用程序将“查询”当前“分支”(e)下方的项目。

但是,我不想将文件包含到浏览器中。作为一个快速而肮脏的检查,我正在检查“路径”是否有扩展名,如果没有,假设它是一个目录并显示它。一切都很好,直到我发现我们有一个名为“v1.1”的文件夹。

有一个解决方案。我可以重新调用 GetItems 并检查其内容。根据 MSDN:

如果路径参数是一个文件,则返回一组仅包含该文件的项。如果路径是文件夹,则返回一组包含该文件夹中所有项目的项目。如果路径包含通配符,则返回指定文件夹中与通配符匹配的一组项目。

但是,每次调用 GetItems 大约需要一秒钟,如果一个文件夹包含多个文件,则节点的“扩展”需要永远。

那么,有没有办法从 TFS 中获取所有“文件夹”?或者任何其他想法如何检查路径是文件夹还是文件?

谢谢!