可视化需要获得C++中CString数组的大小

visual need to get size for CString array in C++

本文关键字:数组 CString C++ 可视化      更新时间:2023-10-16

我有一个在C++中接收CString SearchString[]的方法

我想得到这个数组的大小,以便在循环中迭代,如果没有,那么有人能建议如何将这个数组转换为CStringArray吗。

#include <string>
using namespace std;
void myFunction(HWND shwnd, CString SearchString[], BOOl Visible)
{
    //how do i get the size of "SearchString" here;
   // I do not know how much it is populated, there might be one, two or three strings
}
int main()
{
    CString Header[12];
    BOOL bVisible;
    myFunction(shwnd,Header,bVisible);
    return 0;
}

您可以使用函数模板来获取任何固定大小数组的大小:

template<size_t N >
void foo( CString (&SearchString)[N] )
{
  // the length of the array is N
}

因此,您可以将您的函数作为模板:

template<size_t N >
void myFunction(HWND shwnd, CString (&SearchString)[N], BOOl Visible)
{
   // the length of SearchString is N in here
}

然后这样称呼它:

int main()
{
    CString Header[12];
    BOOL bVisible; // you might need to initialize this
    myFunction(shwnd, Header, bVisible);
}

如果你能给出一些代码,理解并给出答案会很有帮助。从你的问题中,我猜你有一个字符串数组,你想知道它的大小。你可以使用STL向量,在那里你可以使用字符串数据类型,并且可以很容易地找到向量的大小。我给出了一个可以帮助你的示例代码。

#include <iostream>
#include <vector>
#include <string>
using namespace std;
void myfunction(vector<string>& searchstring)
{
    int a=searchstring.size();
    cout<<a;
}
int main()
{
    vector<string>searchstring;
    searchstring.push_back("hi");
    searchstring.push_back("hello");
    searchstring.push_back("man");
    searchstring.push_back("man");
    myfunction(searchstring);
    searchstring.clear();
    return 0;
}

这里向量的大小是4。

为什么不能更改函数的签名?

那么你可以使用CStringArrayvector<CString>,它们会立即变得更容易使用吗?

void myFunction(HWND hwnd, CStringArray stringArray, BOOL Visible)
{
  for(int nIndex = 0; nIndex < stringArray.GetSize(); nIndex++)
  {
    CString tempString(stringArray.GetAt(nIndex));
    // do something with string
  }
}

引用链接,使用名为GetLength的函数获取Cstring对象的长度。