C++ 如何从char指针值数组(char*ptr[])初始化字符串

C++ 如何从char指针值数组(char*ptr[])初始化字符串,c++,arrays,string,argv,C++,Arrays,String,Argv,str是字符串,ptr是字符指针数组。我需要用ptr中包含的值初始化str void help(char* ptr[]) { cout << ptr[0]; cout << ptr[1]; cout << ptr[2]; cout << ptr[3]; string str = ptr[0]; cout << endl << str << endl; } int

str是字符串,ptr是字符指针数组。我需要用ptr中包含的值初始化str

void help(char* ptr[]) {
    cout << ptr[0];
    cout << ptr[1];
    cout << ptr[2];
    cout << ptr[3];
    string str = ptr[0];
    cout << endl << str << endl;

}
int main(int argc, char* argv[]) {
    char arr1[] = "Hello";
    char arr2[] = "Hi" ;
    char arr3[] = "Blah";
    char arr4[] = "Blah";
    char* ptr[4];
    ptr[0] = arr1;
    ptr[1] = arr2;
    ptr[2] = arr3;
    ptr[3] = arr4;
    help(ptr);
}
void帮助(char*ptr[]{
这应该行得通

char ptr[] = "Hello";
string str(ptr);

如果我理解正确,您需要的是以下内容

#include <iostream>
#include <string>
#include <numeric>
#include <cstring>

std::string help( const char * ptr[], size_t n ) 
{
    size_t len = std::accumulate( ptr, ptr + n, ( size_t )0,
                                  []( size_t acc, const char *p )
                                  {
                                    return acc + std::strlen( p );
                                  } );

    std::string str;
    str.reserve( len );

    str = std::accumulate( ptr, ptr + n, str,
                           []( std::string &s, const char *p ) -> std::string &
                           {
                            return s += p;
                           } );

    return str;
}

int main() 
{
    const char * ptr[] =
    {
        "Hello ",
        "Hi ",
        "Blah ",
        "Blah "
    };          

    std::cout << help( ptr, sizeof( ptr ) / sizeof( *ptr ) ) << std::endl;

    return 0;
}

您希望将该字符串初始化为什么?您似乎已经知道,
char*
数组是一组字符串,而不是单个字符串。您希望得到什么输出?是否要将每个字符串串联起来?我想知道为什么不改为使用begin/end习惯用法(也是C++-ish)?@Nawaz您将在哪里使用begin/end?
帮助(ptr,ptr+sizeof(ptr)/sizeof(*ptr));
@Nawaz首先查看函数的声明。我已经看到了。无论如何,您没有使用相同的签名。您只需要创建第二个参数
char*
(或者更好的
char const*
)。
Hello Hi Blah Blah