Хочется сделать функцию для извлечения слова из строчки слов,разделенных разделителем.
StringWordGet(string str,string separ,int token_index)
где str-строка источник, separ-разделитель, token_index-позиция слова.
Например, если
str="aaa,bbb,ccc,ddd,eee,fff"
separ=","
0-ое слово будет aaa
1-е bbb
2-e ccc
и т.д. Вот такая прога для этого у меня получается:
string str="aaa,bb,ccccc,d,eeeeee";//исходная строка-токены 0,1,2,3,4
string separ=",";//разделитель
string::size_type pos;//= int-текущий номер позиции разделителя
int pos_index=1,//текущий индекс массива позиций разделителя
*pos_massive;//массив местоположения разделителей (от 0 до хрена ())
pos=str.find_first_of(separ);//позиция,где попадается первый разделитель
//1) заполняем массив позиций разделителя
while (pos != string::npos)//пока не пройдемся по всей строке
{
pos_massive[pos_index]=pos;
pos = str.find(separ,pos+1);
pos_index=pos_index+1;
}
//2) вырезаем кусок текста-токен
string token;//кусок текста
int token_index=2;//номер токена
if (token_index==0) {token=str.substr(0,pos_massive[token_index+1]);}
else
{
token=str.substr(pos_massive[token_index]+1,pos_massive[token_index+1]-pos_massive[token_index]-1);
}
cout << token <<endl;
Выводом будет: ccccc
Вот сама функция из этой проги получается такой:
string StringWordGet(string str,string separ,int token_index)
{
string::size_type pos;//= int-текущий номер позиции разделителя
int pos_index=1,//текущий индекс массива позиций разделителя
*pos_massive;//массив местоположения разделителей (от 0 до хрена ())
pos=str.find_first_of(separ);//позиция,где попадается первый разделитель
//1) заполняем массив позиций разделителя
while (pos != string::npos)//пока не пройдемся по всей строке
{
pos_massive[pos_index]=pos;
pos = str.find(separ,pos+1);
pos_index=pos_index+1;
}
//2) вырезаем кусок текста-токен
string token;//кусок текста
if (token_index==0) {token=str.substr(0,pos_massive[token_index+1]);}
else
{
token=str.substr(pos_massive[token_index]+1,pos_massive[token_index+1]-pos_massive[token_index]-1);
}
return token;
}
Проблема в том, что ее вызов вываливается с Segmentation fault. Хотя все компилится. Что надо исправить?