2016-04-15 8 views
0

私はdata.txtファイルがあり、その内容は以下のとおりです。1 0 2 9 3 8特定のファイルfstreamを読むには?

[exe1] 

1 0 2 9 3 8 
---------- 


[exe2] 


---------- 
10 2 9 3 8:0 

私は2行目を読みたいです。しかし、私の出力は1です。

マイコード:

#include <iostream> 
#include <fstream> 
#include <limits> 
#include<string> 

std::fstream& GotoLine(std::fstream& file, unsigned int num) { 
    file.seekg(std::ios::beg); 
    for (int i = 0; i < num - 1; ++i) { 
     file.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
    } 
    return file; 
} 

int main() { 


     using namespace std; 
     fstream file("data.txt"); 

     GotoLine(file, 2); 

     std::string line2; 
     file >> line2; 

     std::cout << line2; 
     cin.get(); 
     return 0; 

} 

は私の問題は何ですか?申し訳ありませんが、私はプログラミングの新人です。

答えて

3

file >> line2;は、抽出operator >>が領域を区切り文字として使用するため、最初の空白の読み込みを停止し、したがって「1」だけを読み込みます。入力者>>はあなたが使用する必要がある行全体を読みたい場合はスペースは、文字列を区切り読み込みgetline

+0

、ありがとう – dinhvan2804

2

getline(file,line2)として

使用したいことがありstd::getline

それが動作
std::string line2; 
std::getline(file, line); 
+0

ありがとう、ありがとう – dinhvan2804