Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 常量char*str[]中有多少个字符串?_C++_Arrays - Fatal编程技术网

C++ 常量char*str[]中有多少个字符串?

C++ 常量char*str[]中有多少个字符串?,c++,arrays,C++,Arrays,有没有办法通过编程来确定那个东西中有多少项?我总是可以做#define NUM_DATA_FILES 6或const int NUM_DATA_FILES=6,但有更好的方法吗?我不认为有,但这似乎太基本了,我想确保我没有忘记什么 const static char *g_szTestDataFiles[] = { ".\\TestData\\file1.txt", ".\\TestData\\file2.txt", ".\\TestData\\file3.txt",

有没有办法通过编程来确定那个东西中有多少项?我总是可以做
#define NUM_DATA_FILES 6
const int NUM_DATA_FILES=6
,但有更好的方法吗?我不认为有,但这似乎太基本了,我想确保我没有忘记什么

const static char *g_szTestDataFiles[] = {
    ".\\TestData\\file1.txt",
    ".\\TestData\\file2.txt",
    ".\\TestData\\file3.txt",
    ".\\TestData\\file4.txt",
    ".\\TestData\\file5.txt",
    ".\\TestData\\file6.txt"    
};
})

现在依次迭代一个字符串,直到找到NULL

编辑:格伦是对的,但您应该在此处使用std::vector,而不是c样式*[]

您可以使用:

const static char *g_szTestDataFiles[] = {
".\\TestData\\file1.txt",
".\\TestData\\file2.txt",
".\\TestData\\file3.txt",
".\\TestData\\file4.txt",
".\\TestData\\file5.txt",
".\\TestData\\file6.txt",
NULL

请注意,此方法仅适用于
g_szTestDataFiles
是数组而不是指针的情况。

Arkaitz为您提供了处理此问题的首选方法,但在这里我们讨论的是const char*数组时,您应该能够执行以下操作:

sizeof(g_szTestDataFiles) / sizeof(g_szTestDataFiles[0])

如果您确实使用C++,您可能需要使用 const vector < /Cord>,这给了您一些不错的抽象和方法。

< P>可以使用这个函数:

int size = sizeof(g_szTestDataFiles) / sizeof(g_szTestDataFiles[0]);

无论如何,你应该按照建议使用std::vector。

伟人谢谢!!我很确定有一种方法可以做到这一点,我就是不记得了哈哈。谢谢+1.技术上正确。虽然这是标记C++,但值得指出的是,OP应该使用惯用的C++,即STD:vector,而不是AraySIT是一个好主意,但是在当前的C++版本中,不能在全局范围内声明<代码> const STD::Vector()/Cuth>并相应地填充它。除非希望向量为空或由一个字符串的多个副本组成。C++0x修复了这一问题,并允许向量文本。
template <typename T, std::size_t N>
inline std::size_t array_size(T (&)[N]) { return N; }
std::size_t sz = array_size(g_szTestDataFiles);