C++ 如何从char指针值数组(char*ptr[])初始化字符串
str是字符串,ptr是字符指针数组。我需要用ptr中包含的值初始化strC++ 如何从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
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