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

Смежные вопросы