C++ 如何将数组字符复制到c+中的字符串或int*(void*)+;?

C++ 如何将数组字符复制到c+中的字符串或int*(void*)+;?,c++,arrays,string,C++,Arrays,String,我有多个字符数组要复制到一个字符串或void*或int*中。比如说, char c1[] = "Hello"; char c2[] = "World"; char c3[] = "!!!!"; 我想复制到一个int*(void*)或字符串中。使用C++: #include <sstream> #include <string> std::string c1("Hello"); std::string c2("World"); std::string c3("!!!!"

我有多个字符数组要复制到一个字符串或void*或int*中。比如说,

char c1[] = "Hello";
char c2[] = "World";
char c3[] = "!!!!";

我想复制到一个int*(void*)或字符串中。

使用C++:

#include <sstream>
#include <string>

std::string c1("Hello");
std::string c2("World");
std::string c3("!!!!");

std::stringstream ss;
ss << c1 << c2 << c3;

std::string finalString = ss.str();
#包括
#包括
std::字符串c1(“Hello”);
标准:字符串c2(“世界”);
std::字符串c3(“!!!!”);
std::stringstream-ss;

在C++中,SS > p>可以简单地使用<代码> +运算符< /> >来附加字符串

string a = "abc";
string b = "dfg";
string c = a + b;
cout << c << endl;
string a=“abc”;
字符串b=“dfg”;
字符串c=a+b;

在我看来,最简单的方法是

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

int main() 
{
    char c1[] = "Hello";
    char c2[] = "World";
    char c3[] = "!!!!"; 

    size_t n = 0;

    for ( char *t : { c1, c2, c3 } ) n += strlen( t );

    std::string s;
    s.reserve( n );

    for ( char *t : { c1, c2, c3 } ) s += t;

    std::cout << s << std::endl;


    return 0;
}

你能详细说明一下吗?为什么要把字符串复制到整数中( int */COD>)?对于,如果你只读一个小的,那就很简单了。下面是如何将它复制到String @ JoaCHIMPILBORG Hello,我是C++初学者。我从一个udp连接接收消息。他们给我发送字节[],我收到字符[]。我试过了,如果我打印成int[],它将是正确的。因此,我认为有一种方法可以不使用循环直接将char[]复制到int*中。当然,没有必要使用
stringstream
如果您只是在玩字符串,
c1+c2+c3
就可以了。如果您还想格式化数字、用户定义类型等,请使用流。感谢您指出,我无法复制到void*或int*中,这很有帮助,这不是最简单的方法。它可能(也可能不)比
s=string(c1)+c2+c3快,但肯定不简单。@Mike Seymour这是一个简单且非常清晰的代码。而且它是足够有效的。至少这是这里建议的最好的解决方案。好的,但是你可以去掉一半,剩下的保持不变,并且得到相同的结果(可能更有效,可能更少)。这无疑会更简单。没有必要测量和保留尺寸,除非您已经证明这会带来必要的性能改进。@Mike Seymour没问题。如果您确信保留内存不会提高效率,您可以删除代码的前半部分:)@Mike Seymour此方法很好,因为它是一种通用方法。例如,可以使用向量或字符串或字符数组的其他容器,而不是初始值设定项列表。
HelloWorld!!!!