2016-04-09 19 views
0

以下は、文字列を分割してベクトルに格納するためにコーディングしたプログラムです。 特定のフィールドを文字列から取得し、パイプライン(|)記号を使用して予期された文字列を再度連結するにはどうすればよいですか?C++でベクトルの空白を取り除く方法

#include <iostream> 
    #include <vector> 
    #include <string> 
    #include <sstream> 
    using namespace std; 

    vector<string> split(string str, char delimiter) 
    { 
    vector<string> internal; 
    stringstream ss(str); 
    string tok; 
    while(getline(ss, tok, delimiter)) 
    { 
     internal.push_back(tok); 
    } 
    return internal; 
    } 

    int main(int argc, char **argv) 
    { 
    string myCSV = "Event#:11918124|1234|67893|USD||||444400090|||||302|45|USA|||||"; 
    vector<string> sep = split(myCSV, '|'); 
    for(int i = 0; i < sep.size(); ++i); 
    cout << sep[0] << "|" << sep[3] << "|" << sep[7] << "|" << sep[14] << endl; 
    } 

は出力:

Event#:11918124               
1234                   
67893                   

USD                             
444400090          

302                                                
45                                  
USA 

予想される出力:。

Event#:11918124|USD|444400090|USA 

誰もがC++で私を助けてくださいすることができ、私はCに新しいです++

+1

スペースは '|'ではありません。あなたが尋ねたことをそのコードが行っているようです。そして、すべてを1行にしたいのであれば、各出力要素の後に 'endl'を送りますか? – WhozCraig

答えて

1

あなたがする必要があるすべてあなたのレコードの必要なフィールドを連結することです。それらは常に同じインデックス(0、3、7、14)に存在します。

cout << sep[0] << "|" << sep[3] << "|" << sep[7] << "|" << sep[14] << endl; 

はところで、あなたの「出力は:」あなたのコードに間違っている は、だからあなたの場合には、それはように簡単です。

+0

セミコロンをforloopに追加してコードを修正した後、私は期待される出力を見ることができます。 – doe

関連する問題