需要在C ++中获取CString数组的大小

时间:2013-07-23 05:40:15

标签: c++ visual-c++

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

我想让这个数组的大小迭代for循环,如果没有,那么有人可以建议如何将此数组转换为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;
}

4 个答案:

答案 0 :(得分:4)

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

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);
}

答案 1 :(得分:1)

如果您可以提供一些代码,那么了解并给出答案将会很有帮助。从你的问题我猜你有一个字符串数组,你想知道它的大小。您可以使用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.

答案 2 :(得分:1)

为什么不能更改功能的签名?

然后您可以使用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
  }
}

答案 3 :(得分:0)

使用名为 GetLength 的函数,参考link获取Cstring对象的长度。