2014-02-27 254 views
0

我試圖從單個txt文件讀取創建多個二叉樹。要做到這一點,我必須讀一行上的每個字符,創建樹,然後移動到下一行來創建另一棵樹。我目前的代碼是逐行抓取輸入,我不知道如何改變它?如何從txt文件中逐字符讀取字符並逐行讀取C++

這是我現在有:

int main() 
{ 
    vector <BinaryTree <string> > BT; 
     int iteration = 0; 

     string line; 
     ifstream myfile("input.txt"); 
     if (myfile.is_open()) 
     { 
      while(getline (myfile, line)) 
      { 
       BinaryTree <string> temptree; 
       BT.push_back(temptree); 
       BT[iteration].InsertData(line); 

       cout << "Preorder: "; 
       BT[iteration].PrintPreorder(); 
       cout << endl; 
       cout << "Inorder: "; 
       BT[iteration].PrintInorder(); 
       cout << endl; 
       cout << "Postorder: "; 
       BT[iteration].PrintPostorder(); 
       cout << endl; 
       cout << "Reverse Inorder: "; 
       BT[iteration].PrintReverseInorder(); 
       cout << endl; 

       BT[iteration].PrintPrintTree(); 
       cout << endl; 
       iteration++; 


      myfile.close(); 
     } 
     return 0; 
    } 

回答

0
char c; 
while (myfile>> std::noskipws >> c) 
{ 
    if(c == '\n') 
     printf("new line\n"); 
    printf("%c\n", c); 
} 

使用operator>>通過字符讀取字符,然後測試,如果你得到一個換行符,std::noskipws意味着最初的空白字符將被提取的有效內容。或者你也可以使用這樣的ifstream.get()

char c; 
while (myfile.get(c)) 
{ 
    if(c == '\n') 
     printf("new line\n"); 
    printf("%c\n", c); 
} 
+0

你也可以用'char c = ifs.get()' –