是否有CPP任何內置的功能,可以給我一個二維字符數組函數在cpp中查找2d字符串數組的長度?
爲前的長度,爲ARGS功能
const char* args[] = {"412", "..7", ".58", "7.8", "32.", "6..", "351", "3.9", "985", "...", ".46"}
應該返回11
是否有CPP任何內置的功能,可以給我一個二維字符數組函數在cpp中查找2d字符串數組的長度?
爲前的長度,爲ARGS功能
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
的方法的優點是,你可以不小心用指針做。
Bah,你和你的花哨模板的東西:) – 2012-02-09 22:26:53
+1特別是,這個版本傳遞指針時無法編譯。另一種選擇是sizeof A [sizeof A [0]),當傳遞指針時返回錯誤的數字。不能編譯總是比給出錯誤的答案好。 – 2012-02-09 23:00:29
我試過 'sizeof(args)/ sizeof(args [0]);' 它工作:) 我不想去模板,我不知道如何初始化它們中的2d字符串數組。 – rohanag 2012-02-10 19:40:33
在C++ 11可以使用:
std::end(args) - std::begin(args)
http://ideone.com/ruKX3 – 2012-02-09 22:17:25
沒有實際功能,由於使用陣列作爲函數參數使其衰減到一個指針。答案中給出的宏可以用在數組的作用域中。 – 2012-02-09 22:19:42
@大衛:如果你通過引用傳遞數組不會衰減。 – 2012-02-09 22:21:12