2013-02-22 31 views
0

我對C++有些許不滿。我明白,當一個人從一條信息流中讀取信息時,你會從左邊讀取信息。例如,如果你有與行文件:從C++中讀取右邊的流

我玩弄流

當你讀文件,你會從文件中檢索第一個字符串I'm

是否有可能使您檢索的第一個字符串爲streams

基本上從右側讀取一個流。

注:這是假設你不讀每一次

+0

我認爲你的意思是從頭到尾,而不是從左到右(現在一大羣人讀阿拉伯文和希伯來文都在想你在說什麼)。 – WhozCraig 2013-02-22 08:57:21

+0

如果你想逐行處理一個文件,你應該一次讀一行。 – 2013-02-22 08:57:56

回答

0

你想要做的是閱讀的權利的話到左,而不是整個流整行。從右向左閱讀流將導致smaerts不在streams,我相信你不能這樣做的開箱即用。我的建議是,你閱讀矢量中的單詞,然後將其逆轉。或者,在讀取字符串之前,將字符串翻轉,然後在讀取每個字符後翻轉。

1

流不從左到右讀取,它們從頭到尾讀取。他們應該對事物進行建模,這是閱讀它們的合理方式,並且在某些情況下(例如鍵盤輸入)是唯一明智的方式來閱讀它們。對於一開始就完全瞭解的流(例如文件),如果您真的想要,可以苦苦尋找最後一個元素,然後在您逐行搜索時逐個閱讀它們。這將是緩慢和醜陋的。

取而代之的是,我建議您以通常的方式從頭到尾閱讀讀取,然後在掌握數據後再操作數據。

0

不,在流庫中沒有這方面的支持。一個文件通常與文件數據從左到右,從上到下排列。如果給定可變長度行,除非您掃描行中的所有數據,否則通常無法知道行終止的位置。

對於這個要求,你最好閱讀一整行與函數getline的字符串,那麼你有很多選擇,如:

  • 編寫自己的字符串掃描儀找到又將每個字(簡單夠了,快)
  • 創建從反向行文字istringstream,然後循環依次流中的每個字 - 倒車回來處理(便於流功能之前 - 空格跳躍,轉換,狀態等)
  • tokenising的排成一個數組或類似的,並以相反的順序迭代(簡單來說,但內存餓了)