2016-04-28 34 views
0

在過去的幾天中,我一直在對着牆壁猛撞我的頭,想出如何在讀取文件後向輸出添加空格。代碼從文件中讀取並輸出到控制檯「Ilikecomputers」,當它應該打印出「我喜歡電腦」時。有關如何添加空間的任何提示?給鏈表添加一個空格

感謝

的代碼如下

#include <iostream> 
#include <list> 
#include <ctype.h> 
#include <fstream> 

using namespace std; 

void printList(const list<char> &myList); 
void fillList(list<char> &myList); 
void changeCase(list <char> &myList); 

void printList(const list<char> &myList) 
{ 
    list<char>::const_iterator itr; 
    cout << "\nAfter Conversion: " << endl; 
    for (itr = myList.begin(); itr != myList.end(); itr++) { 
    cout <<*itr; 
} 
cout << '\n'; 
} 

void fillList(list<char> &myList) 
{ 
ifstream file("test.txt"); 
    string print; 
    while(file >> print){ 
    for (int i = 0; i<print.length(); i++) { 
    myList.push_back(print[i]); 
    } 
} 
} 

int main() 
{ 
    list<char> myList; 

    cout << "Before Conversion: " << endl; 
    ifstream file("test.txt"); 
    string print; 
    while(file >> print){  
    cout << print << " "; 
} 

    fillList(myList); 
    printList(myList); 

return 0; 
} 
+1

'while(file >> print){'將跳過文件中的空格。您可以阻止此調用['std :: noskipws'](http://en.cppreference.com/w/cpp/io/manip/skipws)。 –

回答

1

看起來你在空格和其他空白字符閱讀否則>>跳躍時需要指定std::noskipws。只需要把

file >> std::noskipws; 

在閱讀之前。

0

你可以這樣來做:

void fillList(list<char> &myList) 
{ 
    ifstream file("test.txt"); 
    string print; 
    while(file >> print){ 
    for (int i = 0; i<print.length(); i++) { 
     myList.push_back(print[i]); 
    } 
    myList.push_back(' '); // this is what you were missing 
    } 
} 

或者你可以簡單地讀取字符逐一插入所有,而不是隱含跳過空白爲operator >>一樣。