2016-07-05 12 views
0

データ型の変数を使用して配列サイズを設定する方法についてかなりの研究を行ってきましたが、使用するものは何も見つかりませんでした。だからここint変数を使用してchar []のサイズを設定します

とは、私に"expression must have a const value"

char * charptr = "test"; 
int sze = strlen(charptr); 
char str[sze]; 

この質問はばかげている場合は申し訳ありませんが、私はまだc++

どれに非常に新たなんだというエラーを与える私が試したものの一例です助けていただければ幸いです!

+2

優れた選択肢は、 'char'配列の代わりに' std。:string'を使うことです。 –

+2

C++を初めてお使いの方は、ポインタを使用しないでください。ポインタは低レベルのエキスパートツールで、主に実装を最適化し、低レベルの操作を行うためのものです。 –

+0

標準のC++ではこれを行うことはできませんが、いくつかのC++コンパイラには拡張機能があります。 C++の標準コンテナがあることを考えると、それは非常に興味深い機能ではありません。 – molbdnilo

答えて

2

szeコンパイル時には知られていません。; サポート可変長配列したがってchar str[sze];は無効です。C++。他に、後続のdelete[] str;であなたがメモリリークます

つの回避策はchar* str = new char[sze];を使用することですが、これは必見バランスにあなたので、これをあなたの問題を引き起こす可能性があります。

可能であれば、組み込みの文字列クラスstd::stringを使用する方がはるかに優れています。

2

動的割り当てを使用する必要があります。

int size = 1337; 
char *str = new char[size]; 

このようにすると、プログラムは実行時にヒープにメモリを割り当てます。

char str[size]を実行することはできません。sizeはコンパイル時に不明であり、コンパイラはスタックにどれだけの容量を割り当てる必要があるのか​​分からないためです。

もちろん、delete [] strを覚えておいてください。

関連する問題