は私の元のための2D char配列cppの2d文字列配列の長さを見つける関数はありますか?
の長さを与えることができ、CPPのいずれかの作り付けの機能があり、引数
const char* args[] = {"412", "..7", ".58", "7.8", "32.", "6..", "351", "3.9", "985", "...", ".46"}
する機能は、11
は私の元のための2D char配列cppの2d文字列配列の長さを見つける関数はありますか?
の長さを与えることができ、CPPのいずれかの作り付けの機能があり、引数
const char* args[] = {"412", "..7", ".58", "7.8", "32.", "6..", "351", "3.9", "985", "...", ".46"}
する機能は、11
sizeof(args)/sizeof(*args)
これはuse a template functionです。
template <typename T, std::size_t N>
std::size_t size(T(&)[N]) { return N; }
sizeof
を使用してのアプローチを超える利点は、あなたが誤ってポインタでそれを行うことができないということです。 C++ 11では
バー、あなたとあなたの空想のテンプレートもの:) –
+1特に、このバージョンは、ポインタを渡すとコンパイルに失敗します。代わりの 'sizeof A/sizeof A [0]'は、ポインタを渡すと間違った番号を返します。コンパイルに失敗すると、間違った答えを出すよりも常に良いです。 –
'sizeof(args)/ sizeof(args [0]);' を試してみました。 私はテンプレートを使いたくないのですが、2d文字列の配列を初期化する方法がわかりません。 – rohanag
あなたが使用することができます。
std::end(args) - std::begin(args)
http://ideone.com/ruKX3 –
実際の関数が関数のパラメータは、ポインタに崩壊し、それを原因として配列を使用しているので、ありません。答えに与えられたマクロは、配列のスコープで使用できます。 –
@David:参照渡しの場合、配列は減衰しません。 –