比如我定义了一个二维数组a[10][100],通过程序向其中写内容,但只写了3个字符串,“a”“ab”“abc”,现在我想把这三个字符串写到excel表里去,怎样知道这个二维数组的实际一维长度(也就是3,而不是10)。使用sizeof得到的是10*100=1000.

解决方案 »

  1.   

    定义a[10][100]后就紧接着给它的内存清零。
    memset(a,0,10*100);
    然后在写入字符串。
    再用一个循环判断。
    int n = 0;
    for (int i=0;i<10;i++)
    {
       if (a[i][0] != 0)
          n++;
    }
    n既是不为空的字符串个数。实际上此类问题是用C++标准库里的一些类和容器会很方便。
    使用string来保存字符串。
    使用vector容器作为字符串数组。
    #include <vector>
    #include <string>
    using namespace std;
    vector<string> a;
    a.push_back("a");
    a.push_back("ab");
    a.push_back("abc");int n = a.size();
    //n即为3