2016-10-05 5 views
0

私はC++を初めて使い、fstreamのヘルプが必要です。私は検索して読んだことがあり、この情報を見つけることができません。fstreamを使用して特定のデータを検索する

txtファイルの特定の行からデータを取得したいとします。 txtファイルの例については

、私が持っている:

10行と11列を、各列がint、文字、文字列のいずれかである、など

私はAから一つの変数を取得することができますとにかくあり特定の行と列、配列を使用せずに?

例:私は事前に、行と列の9から4

おかげで変数を取得したい場合!

+2

8つの列をスキップして3つの列をスキップし、次に1つのことを読みますか? – immibis

+1

あなたが求めているのは、「ファイル内の特定の場所に移動するにはどうすればよいですか?」ということです。誰かが示唆していることはありません。必要な部分が終わるまで、そして必要な部分を録音して、ファイルを閉じます。どこにいるのかわからなくても、ファイル内のある場所にジャンプすることはできません。 – searchengine27

答えて

2

各行にはどのくらいの長さがあり、どの列が各行にあるか正確に知っていれば、どこに行きたいか正確に計算できます。use seekgto position yourself

データがテキストとして保存されているため、これは珍しいことです。ファイルからN番目の行に到達するために、ファイルにN回

  1. ファイルを開く
  2. 使用std::getline:あなたは、通常、次のことを行う関数を記述する必要があります。
  3. 行をstd::stringstreamに書き込んでください。
  4. std::stringに列を読み取るためにに>>をM回使用してください。
  5. M番目の列をstd::stringから適切なデータ型に変換します。
  6. 戻り値が変換された第M列。
0
//------------------------------- 
//--This code maybe can help you 
//------------------------------- 
#include <iostream> 
#include <fstream> 
#include <string> 
#include <sstream> 

int main() 
{ 

    char lBuffer[100]; 
    //--- 
    std::string myfilename = "/var/log/mylog.log"; 
    std::ifstream log_file (myfilename); 
    std::stringstream my_ss; 
    std::string c1, c2, c3; 
    //--- 
    std::cout << "Rec1\t\t Rec2\t\t Rec3" << std::endl; 
    while (! log_file.eof()) 
    { 
      log_file.getline(lBuffer,80); 
      my_ss << lBuffer; 

      my_ss >> c1; 
      my_ss >> c2; 
      my_ss >> c3; 

      std::cout << c1 << "\t\t " << c2 << "\t\t " << c3 << std::endl; 

    } 

} 
//--- 
関連する問題