2012-02-08 25 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; 
} 

私はこの問題を持って、私は私のカデナの他の方法では、strlenのような機能を使用せずにCの文字列の長さを計算したいですクラスconst char *ではないのでできますが、今は何をすべきかわかりません。無効な変換[-fpermissive]

+7

あなたはおそらく '-fpermissive'を使用しないでください。通常はエラーの場合、コンパイルしないでください。 –

+0

私はコードブロックIDEを使用しており、デフォルトのコンパイルモードです – freinn

+2

'strlen(punt)'の何が問題なのですか? '' std :: string'または 'std :: vector 'の 'c.pstr'は?これらのループと変数の多くは、いくつかの標準テンプレートを単純に使用して消えるように見えます。 – dreamlax

答えて

9

const char * punt = cad; 
+0

+1は同じ時間に初期化する! – dreamlax

+0

なぜあなた(そして私)はこれをすることができますか?なぜconstですか?通常のポインタは同時には初期化できません – freinn

+0

もちろん可能です!なぜあなたは考えなかったのですか? –

4

あなたが必要とする:あなたが正しい型であることをpuntを宣言することができ

const char* punt; punt = cad; 
+0

Omg !!私は思っていませんでした、なぜ私はこのポインタが "const"であると言いますか? :S:S – freinn

+4

@freinnあなたはまだ何か 'const'を指すポインタを動かすことができます。' const char * 'はポインタが指しているものを変更できないことを意味します。 _move_できないが、何を指しているのかを変更できるポインタが必要な場合は、 'char * const'を実行します。ポインタを移動できず、何も変更できない場合はconst char * const' –

+0

@freinn:それが指しているオブジェクトの値を変更することはできませんが、指す場所を変更することはできます。 – dreamlax

関連する問題