2016-04-25 38 views
-2

各行を読み込み、整数コンポーネントと文字列コンポーネントを別々に保存しようとしている次のテキストファイルがあります。ここでは、テキストファイルされる:テキストファイルからの読み込み - 行の要素を区切る

RUID Name 
4325 name1 
RUID Name 
5432 name2 
6530 name3 
RUID Name 
1034 name4 
2309 name5 

ここでは、私が読んしようとするコードは次のとおりです。

int main() 
{ 
    // Initialize Lists 
    LinkedList list1, list2, list3; 

    // Initialize Counter 
    int counter = 0; 


    // Entry containers 
    const int size = 12; 
    char entry[size]; 
    string name[size]; 
    string RUID[size]; 

    // BEGIN: "read.txt" 
    // Open 
    ifstream studDir; 
    studDir.open("read.txt"); 
    // Read 
    while (studDir.is_open()) 
    { 
     if (studDir.eof()) 
     { 
      cout << "Reading finished" << endl; 
      break; 
     } 

     else if (!studDir) 
     { 
      cout << "Reading failed" << endl; 
      break; 
     } 

     studDir.getline(entry, size); 


     if (entry != "RUID Name") 
     { 
      cout << entry << " " << endl; 
     } 

    } 


    return 0; 
} 

誰も私が「RUID名」の行を無視するだけでなく、できるようになる方法をお勧めでした関連する行の整数部分と文字列部分を区切ります。私は少しの成功でいくつかの戦略を試してみました。また、並べ替えられたリストの出力をテキストファイルに書きたいと思っています。

答えて

1

あなたはこのようなあなたのループを書き直す必要があります。

// Entry containers 
const size_t size = 12; 
std::string entry; 
string name[size]; 
string RUID[size]; 
size_t index = 0; 

// ... 

while (index < size && std::getline(studDir,entry)) { 
    if (entry != "RUID Name") { 
     cout << entry << " " << endl; 
     std::istringstream iss(entry); 
     if(!(iss >> RUID[index] >> name[index])) { 
      std::cout << "Reading failed" << endl; 
      break; 
     } 
     ++index; 
    } 
} 
+0

@LokiAstariうん! –

関連する問題