0

我对c ++有点菜鸟。我知道当一个人从流中读取时,您从左侧读取。例如,如果您有一个包含以下行的文件:

我在玩溪流

当您读取文件时,您将从文件中检索的第一个字符串是I'm

是否可以使您检索的第一个字符串成为streams

基本上,从右侧读取流。

注意:这是假设您每次没有阅读整行

4

3 回答 3

1

流不是从左到右读取的,它们是从头到尾读取的。他们应该对事物进行建模,这是阅读它们的逻辑方式,并且在某些情况下(例如键盘输入)是阅读它们的唯一明智方式。对于一开始就完全知道的流(例如文件),如果你真的想要,你可以煞费苦心地寻找最后一个元素,然后在你去的时候一个接一个地阅读它们。这将是缓慢而丑陋的。

相反,我建议您以通常的方式从头到尾阅读,然后在获得数据后对其进行操作。

于 2013-02-22T09:00:35.433 回答
0

您要做的是从右到左阅读单词,而不是整个流。从右到左读取流会导致smaerts不输入streams,我相信你不能开箱即用。我的建议是您阅读向量中的单词,然后将其反转。或者,在阅读之前反转整个字符串,然后在阅读后反转每个单词。

于 2013-02-22T08:57:50.943 回答
0

不,流库中不支持此功能。一个文件通常按照文档数据从左到右、从上到下的顺序排列。给定可变长度的行,除非您扫描行中的所有数据,否则您通常无法知道行终止的位置。

对于此要求,您最好使用 getline 将整行读入字符串,然后您有很多选择,例如:

  • 编写自己的字符串扫描器来依次查找每个单词(足够简单,快速)
  • 从反转的行文本创建一个 istringstream,然后循环以依次流式传输每个单词 - 在处理之前将其反转(方便流功能 - 空格跳过、转换、状态等)
  • 将行标记为数组或类似的,并以相反的顺序迭代(概念上简单,但内存占用)
于 2013-02-22T09:01:34.920 回答