2015-08-15 1 views
0

Вход представляет собой стандартный ввод строки. Как это.Разделите большую строку и остановите, если найден конкретный символ

«Ананд Рамеш, Суреш # Ананд Рамеш, Суреш, Суреш, Anand»

Я хочу, чтобы получить все имена до # и сохранить его в массиве. И используйте имена после #, чтобы выполнить некоторую операцию.

Как скопировать первые три имени до # в массив. До сих пор я понял, как копировать строку, разделенную запятой. Я не мог найти решение для остановки после того, как найден какой-либо конкретный элемент. Как я остановлюсь, когда столкнулся с #. Вот мой код:

void findCombination(string input) 
{ 
    stringstream ss(input); 
    string buffer; 
    vector<string>names; 
    int i=0; 

    while(getline(ss,buffer,',')) 
    { 
     names.push_back(buffer); 
    } 


    for(int i=0;i<names.size();i++) 
      cout << names[i] <<endl; 

    //return NULL; 

} 
+0

1.do разделение на '#'. 2. затем снова расщепляем по ',' на 0-й индекс. –

+0

@AvinashRaj Я использовал вектор, чтобы взять первую подстроку перед #. И попытался присвоить значение ss (sstream) с помощью ss << substream [0]. но по какой-то причине это не сработало. 0-е место имеет строку перед # – Shivji

+0

попробуйте первый 'getline()' с '#' в качестве разделителя – Christophe

ответ

0

Существует множество способов сделать это. Самый простой из них будет:

void findCombination(string input) 
{ 
    string filteredinput(input,0, input.find('#')); 
    stringstream ss(filteredinput); 
    ... // rest of your code unchanged 
} 
Смежные вопросы