const char*str []中有多少个字符串?

cch*_*ion 2 c++ arrays

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

有没有办法以编程方式确定该项目中有多少项?我可以随时做#define NUM_DATA_FILES 6,const int NUM_DATA_FILES=6但有更好的方法吗?我不认为有,但这似乎太基本了,我想确保我不会忘记一些事情...

Ark*_*nez 11

const static char *g_szTestDataFiles[] = {
".\\TestData\\file1.txt",
".\\TestData\\file2.txt",
".\\TestData\\file3.txt",
".\\TestData\\file4.txt",
".\\TestData\\file5.txt",
".\\TestData\\file6.txt",
NULL
Run Code Online (Sandbox Code Playgroud)

};

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

编辑:格伦是正确的,你应该在这里使用std :: vector而不是c style*[]


Gre*_*ill 7

您可以使用:

sizeof(g_szTestDataFiles) / sizeof(g_szTestDataFiles[0])
Run Code Online (Sandbox Code Playgroud)

请注意,此方法仅g_szTestDataFiles数组而非指针时才有效.


Tim*_*sch 6

Arkaitz给了你处理这个的首选方法,但是当我们在这里谈论一个const char*数组时,你应该能够做到以下几点:

int size = sizeof(g_szTestDataFiles) / sizeof(g_szTestDataFiles[0]);
Run Code Online (Sandbox Code Playgroud)


lha*_*hne 6

如果您确实在使用C++,那么您可能希望使用一个const vector<string>为您提供一些很好的抽象和方法.