我有在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;
}
答案 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)
为什么不能更改功能的签名?
然后您可以使用CStringArray
或vector<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对象的长度。