2016-04-09 82 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

空格不是'|',該代碼似乎在做你所要求的。如果你想在一行上做所有的事情,那麼在每個輸出元素後面發送'endl'是什麼? – WhozCraig

回答

1

所有你需要做的。是連接你的記錄的必要字段。它們總是存在於相同的索引(0,3,7,14)。 所以你的情況是一樣簡單:

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

順便說一句,你的「輸出」到你的代碼是錯誤的。

+0

通過在forloop中添加分號來代替代碼後,我能夠看到預期的輸出。感謝您的幫助 – doe