2012-02-08 3 views
7
int :: cadena calculatelenght(const cadena& a, const char* cad) 
{ 
    cadena c; 
    int lenght = 0; 
    char* punt; punt = cad; 
    while(*punt){ 
     lenght++; punt++; 
    } 
    return lenght; 
} 

Я эту проблему, я хочу, чтобы вычислить длину строки C без использования функций, таких как strlen, в других методах моей Cadena класс I может, потому что это не const char *, но теперь я не знаю, что делать.недействительным преобразование из «сопзЬ символ *» в «символ *» [-fpermissive]

+7

Вы, вероятно, не следует использовать '-fpermissive'. Если это обычно ошибка, вы не должны ее компилировать. –

+0

Я использую блоки кода IDE и является режимом компиляции по умолчанию – freinn

+2

Что случилось с 'strlen (punt)'? Или 'std :: string' или' std :: vector 'для' c.pstr'? Многие из этих циклов и переменных выглядят так, будто они уходят с простым использованием некоторых стандартных шаблонов. – dreamlax

ответ

9

Вы можете объявить punt быть правильного типа:

const char * punt = cad; 
+0

+1 для инициализации в одно и то же время! – dreamlax

+0

Почему ты (и я) делаешь это? потому что это const ?? нормальный указатель не может инициализировать в то же время – freinn

+0

Уверен, что он может! Почему вы так не думаете? –

4

Понадобится:

const char* punt; punt = cad; 
+0

Омг !! Я не думал об этом, тогда почему мы говорим, что этот указатель является «const», когда я его перемещаю, чтобы вычислить длину? : S: S – freinn

+4

@freinn вы все равно можете переместить указатель, указывающий на что-то 'const', что' const char * 'просто означает, что вы не можете изменить _что указывает указатель на_. Если вы хотите, чтобы указатель не мог _move_, но вы можете изменить то, на что он указывает, тогда вы выполняете 'char * const', и если вы хотите, чтобы указатель не перемещался, и вы не можете изменить то, что он указывает на, вам нужно 'const char * const' –

+0

@freinn: вы не можете изменить значение объекта, на который он указывает, но вы можете изменить его значение. – dreamlax

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