Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 需要获取C+中CString数组的大小+;_C++_Visual C++ - Fatal编程技术网

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

C++ 需要获取C+中CString数组的大小+;,c++,visual-c++,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 "SearchStr

我有一个在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;
}
#包括
使用名称空间std;
void myFunction(HWND shwnd,CString SearchString[],BOOl可见)
{
//如何在这里获取“SearchString”的大小;
//我不知道填充了多少,可能有一个、两个或三个字符串
}
int main()
{
CString头[12];
布尔可视;
myFunction(shwnd、Header、bVisible);
返回0;
}

您可以使用函数模板获取任意固定大小数组的句柄:

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

如果你能给出一些代码,理解并给出答案会很有帮助。根据你的问题,我猜你有一个字符串数组,你想知道它的大小。可以使用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;
}
#包括
#包括
#包括
使用名称空间std;
void myfunction(向量和搜索字符串)
{
int a=searchstring.size();

无法使用名为GetLength

的函数获取Cstring对象的长度为什么不能更改函数的签名

然后您可以使用
CStringArray
vector
,这会立即变得更容易使用吗

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
  }
}
void myFunction(HWND-HWND、CStringArray-stringArray、BOOL-Visible)
{
对于(int-nIndex=0;nIndex
关于
大小\u t
??w..w…等等,你是在问代码吗?我不知道接收数组的大小,我需要得到它,让它成为一个推断大小的模板,传递大小,或者使用
std::array
。问题是令人困惑的,你为什么要将Cstringarray转换回Cstring数组?你想转换吗是否将字符字符串插入Cstring数组?@Santhosh:void abc(HWND shwnd,Cstring searchString[],BOOl visible)我的方法是这样的,现在我需要找到这个“searchString”的大小Santosh,你没有明白我的问题,我不想要数组中每个项目的字符串长度。我需要使用sizeof函数的数组大小测定来获取sizeof数组,我无法在我的系统上尝试此操作,因为我目前没有visual studio。我相信“sizeof”可以用于CStringArray,而不是CString abc[]Getlength通常根据msdn文档给出cstring对象中的字节数。这本身就是大小。您甚至可以将cstring对象转换为以null结尾的常规字符串,然后计算字符串数组的大小。@SanthoshPai
sizeof
在普通函数中不起作用,因为数组的类型将衰减为指针。在此之后,所有大小信息都将丢失。因此,您需要将大小作为参数传递,或者使用如我所示的函数模板。
#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;
}
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
  }
}