strok.c_str() вернет си-строку, но она будет только для чтения. Если бы у вас было написано
тогда компилятор пропустил бы такой код:
Только возращаемый указатель долго не живет. Если в strok будут внесены изменения, то есть шанс, что содержимое строки будет перенесено в другое место памяти и указатель устареет. Так что корректнее всего вытаскивать содержимое строки в буфер, и работать уже с буфером.
Код
1
2
3
4
5
6
7
| char *buf = new char[strlen(strtok.c_str())];
strcpy(buf, strtok.c_str());
a=fun(buf);
delete[] buf; |
Или воспользоваться функцией strdup с дальнейшим удалением получившейся строки с помощью функции free