如何在 C++ 中将数组 char 复制到字符串或 int* (void *) 中? [关闭]
Posted
技术标签:
【中文标题】如何在 C++ 中将数组 char 复制到字符串或 int* (void *) 中? [关闭]【英文标题】:How to copy array char into string or int* (void *) in c++? [closed] 【发布时间】:2015-01-04 11:02:12 【问题描述】:我有多个 char 数组要复制到一个字符串或 void * 或 int * 中。例如,
char c1[] = "Hello";
char c2[] = "World";
char c3[] = "!!!!";
我想复制到一个 int* (void*) 或字符串中。
【问题讨论】:
您能详细说明一下吗?为什么要将字符串复制成整数(int *
)?
至于std::string
,你稍微看一下就很简单了。
这里是如何将其复制到字符串***.com/questions/8960087/…
@JoachimPileborg 你好,我是 C++ 初学者。我从一个 udp 连接收到消息。他们给我发送字节[],我收到字符[]。我试过了,如果我打印到 int[] 中,那将是正确的。所以我认为是否有某种方式直接将 char[] 复制到 int* 中而无需循环。
【参考方案1】:
我认为最简单的方法如下
#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;
输出是
HelloWorld!!!!
【讨论】:
这不是最简单的方法。它可能(也可能不会)比s = string(c1)+c2+c3
更快,但肯定不会更简单。
@Mike Seymour 这是一个简单且非常清晰的代码。而且它足够高效。至少这是这里建议的最佳解决方案。
好的,但是您可以删除一半,保持其余部分不变,并获得相同的结果(可能更有效,可能更少)。那无疑会更简单。除非您已经证明这会带来必要的性能改进,否则无需测量和保留大小。
@Mike Seymour 没问题。如果您确定保留内存不会提高效率,您可以删除前半部分代码:)
@Mike Seymour 这种方法很好,因为它是一种通用方法。例如,可以有一个向量或其他字符串或字符数组容器,而不是初始化列表。【参考方案2】:
在 C++ 中,您可以简单地使用 + operator
附加字符串
string a = "abc";
string b = "dfg";
string c = a + b;
cout << c << endl;
【讨论】:
【参考方案3】:使用 C++ 的 std::string
和 std::stringstream
命名空间类会更容易:
#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();
您不能将它们复制到int*
或void*
,因为它们是完全不同的类型。
【讨论】:
当然,如果您只是玩弦乐,则不需要stringstream
,c1 + c2 + c3
可以胜任。如果您还想格式化数字、用户定义的类型等,请使用流。
感谢您指出我无法复制到 void * 或 int *,这很有帮助以上是关于如何在 C++ 中将数组 char 复制到字符串或 int* (void *) 中? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 中将 char 指针附加到 std::string