2016-04-09 15 views
0

Aşağıda, dizeyi bölmek ve bir vektörde saklamak için kodlanmış programdır. Özelik alanlarını dizeden nasıl geri alabilirim ve yine boruhattı (|) sembolü kullanarak beklenen dizeyi birleştirebilirim.C++ vektöründeki boşlukları nasıl kaldırılır

#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; 
    } 

çıkışı:

Event#:11918124               
1234                   
67893                   

USD                             
444400090          

302                                                
45                                  
USA 

Beklenen Çıktı:.

Event#:11918124|USD|444400090|USA 

kimse ben C++

+1

boşluklar '' ', Bu kod sizin istediklerinizi yapıyor gibi görünüyor. Ve eğer bir satırdaki her şeyi istiyorsanız, her çıktı elemanından sonra 'endl' gönderen nedir? – WhozCraig

cevap

1

yapmanız gereken tek şey yeni am ++ c bana yardım edebilir kaydınızın gerekli alanlarını birleştirmek. Her zaman aynı indekslerde bulunurlar (0, 3, 7, 14). Senin "çıkışı:" Btw

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

: Kodunuza yanlıştır Yani sizin durumda o kadar kolaydır.

+0

kodun modifiye edildiğinden sonra fornoop'a noktalı virgül ekleyerek beklenen çıktıyı görebiliyorum.Yardımınız için teşekkür ederiz – doe

İlgili konular