標準 C++ は、C99 および g++ の可変長配列 (VLA) をサポートしていません。
標準 C++ では、たとえば、次のように使用できますstd::vector
(コードは変更されています)。
#include <iostream>
#include <vector>
int main(){
int sz;
std::cout<<"number?\n";
std::cin>>sz;
// This line
std::vector<double> dynamic_arr( sz ); // Initialized to zeroes.
//output the value just to use the array.
std::cout<<dynamic_arr[0]<<std::endl;
}
また、std::basic_string
通常はtypedef
sstd::string
とstd::wstring
.
一般的に、主な問題は上記のように動的サイズだけであり、std::vector
うまくstd::basic_string
機能します。ただし、動的サイズの配列の非常に効率的なスタック割り当てを行う方法が問題になる場合があります。多くの C および C++ 実装は、そのための非標準関数alloca
をサポートしていますが、残念ながら、障害の処理方法が大きく異なります。私の知る限り、そのための一般的に利用可能なライブラリ ソリューションもありません。しかし幸いなことに、私が知っている主な使用法は (前述のようalloca
に多くのプラットフォームで利用可能ですが)、Windows での文字列エンコード変換であり、時間が経つにつれて関連性が低くなり、Windows プログラムはますます純粋になります。ユニコード指向。