有没有直接的方法可以连接两个字符数组 (char*)
Is there a direct way to concatenate two char arrays (char*)?
我知道我可以用它们构造字符串,只需使用运算符+。但是我需要将串联的字符数组传递给旧的 C 函数,所以我不能这样做。
-
你可以用
std::string
做到这一点std::string s1 = "Hello", s2 = "World"; std::string s3 = s1 + s2; const char* c_data = s3.c_str( ); // pointer to char array
-
你可以用strcat函数来做
如果你正在与 C 代码交互,你可能希望你的字符串被分配malloc()
而不是new
:C 中有许多不错的函数可以产生错误字符串。其中之一是 asprintf()
,您可以轻松地使用它来连接字符串:
char* foo = ..., *bar = ..., *result;
asprintf(&result, "%s%s", foo, bar);
baz(result); //Use the concatenated string.
free(result); //cleanup
这种方法的好处是,它非常安全:由于asprintf()
分配了一个缓冲区来适应你的字符串,所以没有像strcat()
、strcpy()
和朋友那样溢出缓冲区的危险。
但是请注意,即使asprintf()
符合 POSIX-2008 标准,它也不是 C 标准的一部分,因此并非在所有地方都可用。不过,所有Linux系统都有它。
相关文章:
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- 在函数中连接两个字符,并在 C++ 中返回输出
- 舍入 QDecDouble 值,精度最多为两个字符
- 计算两个字符序列
- 在c++中连接两个字符
- 有没有办法我可以从 istringstream 中读取两个字符
- 如何查看两个字符变量是否相等
- 使用位于 C 字符串中的两个字符*获取子字符串
- 比较两个字符的问题
- 如何修复密码条目,它一次输入两个字符
- 字符串构造函数将两个字符* 放入另一个 std::string 在 C++14 中有效,但不适用于 C++17
- 将两个字符数组相互添加
- 在 c++ 中添加两个字符
- 如何删除QString的前两个字符
- 如何使用两个字符来控制 C++ 程序的流程
- 如何将两个字符或字符串数组附加到一个数组中
- 如何从两个字符之间的文件中提取整数
- 删除两个字符之间的文本
- std::setw() 将特殊字符视为两个字符
- 比较两个字符*是否相等