2016-04-28 5 views
0

ファイルを読み込んだ後に出力にスペースを追加する方法を考え出した過去数日間、私は頭を壁に向けて叩いています。コードはファイルから読み込み、「I like computers」を印刷するときにコンソール「Ilikecomputers」に出力します。どのようにスペースを追加する上でのヒント?リンクされたリストにスペースを追加する

おかげ

コードあなたは、スペースや他の空白文字を超えるそう>>スキップを読むときstd::noskipwsを指定する必要があるように見える

#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

を下回っています。ただ、読む前に

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 >>がするように空白をスキップするのではなく、それらのすべてを挿入することができます。

関連する問題