2017-05-20 31 views
-3

タブ区切りデータのテーブルをC++の2次元ベクトルに読み込もうとしています。次のコードはエラーなしでコンパイルされますが、whileループの条件は常に0と評価され、2-Dベクトルは決して構築されません。私は間違って何をしていますか?タブ区切りファイルからテーブルデータを読み込む方法C++

#pragma once 
#include <iostream> 
#include <fstream> 
#include <vector> 

using namespace std; 

int main(int argc, char * argv[]) 
{ 
    fstream tabFile("C:\dev\file.tab", ios_base::in); 
    vector< vector<float> > verts; 
    float x, y, z; 
    int ind; 
    while (tabFile >> ind >> x >> y >> z) 
    { 
     vector<float> vec{x,y,z}; 
     verts.push_back(vec); 
    } 
    cout << verts.size() << endl; 
    system("PAUSE"); 
    return 0; 
} 

file.tab内容:"C:\dev\file.tab"

1 2 3 4 
5 6 7 8 
9 10 11 12 
+0

hi!すぐに使用できるソリューションを使用してください!乾杯! – gaussblurinc

+0

あなたが間違っていることはあなたが[mcve]を提供していないことです。示されたコードに何も問題はありません。ほとんどの場合、単に 'file.tab'の実際の形式と一致しないかもしれませんが、入力ファイルの内容は表示されないので、答えは出ません。 –

+0

@ gaussblurincどういう意味だろう... – Quentin

答えて

0

、バックスラッシュは文字エスケープとして解釈されている - 実際には、このコードはコンパイルされてはなりません。 "C:\\dev\\file.tab"と書く必要があります。もちろん、実際にファイルが開かれたことを確認してから、読み込んでください。

#pragma onceはヘッダーファイルのみに含まれると考えられますが、これは実装ファイルです。

もう一つの補足として、don't use using namespace std;をお願いします。

+0

'#pragma once'は標準ではありません。広くサポートされています。しかし、標準ではありません。次に、厳密にインクルードガードとして動作しません。それには警備員が含まれていることが望ましい – arboreal84

+0

@ arboreal84が付与されましたが、誰がそれが標準だと言いましたか? – Quentin

+0

ありがとう!それがトリックでした。私はあまりにも文字通りこのメソッドの例を取っ​​ていたと思います。 –

関連する問題