如何在C++中复制标准::字符串类型的字符串
How to copy a string of std::string type in C++?
我使用了strcpy()
函数,它仅在使用C字符串数组时才有效,例如:
char a[6] = "text";
char b[6] = "image";
strcpy(a,b);
但每当我使用
string a = "text";
string b = "image";
strcpy(a,b);
我收到此错误:
函数.cpp:调用
strcpy(std::string&, std::string&)
没有匹配函数
如何在C++中复制2个字符串数据类型的字符串?
你不应该使用 strcpy()
来复制std::string
,只用于 C 样式字符串。
如果要将a
复制到b
则只需使用 =
运算符即可。
string a = "text";
string b = "image";
b = a;
strcpy 仅适用于 C 字符串。对于 std::string,您可以像复制任何C++对象一样复制它。
std::string a = "text";
std::string b = a; // copy a into b
如果要连接字符串,可以使用+
运算符:
std::string a = "text";
std::string b = "image";
a = a + b; // or a += b;
您甚至可以一次执行多项操作:
std::string c = a + " " + b + "hello";
尽管"hello" + " world"
无法按预期工作。你需要一个明确的 std::string 在那里:std::string("Hello") + "world"
> strcpy 示例:
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[]="Sample string" ;
char str2[40] ;
strcpy (str2,str1) ;
printf ("str1: %sn",str1) ;
return 0 ;
}
输出:str1: Sample string
您的案例:
一个简单的=
操作员应该完成这项工作。
string str1="Sample string" ;
string str2 = str1 ;
在我看来,Caesar 的解决方案是最好的,但如果你仍然坚持使用 strcpy
函数,那么在你准备好字符串之后:
string a = "text";
string b = "image";
您可以尝试以下任一操作:
strcpy(a.data(), b.data());
或
strcpy(a.c_str(), b.c_str());
只需调用 std::string
类的 data()
或 c_str()
成员函数,即可获取字符串对象的char*
指针。
strcpy()
函数没有重载来接受两个std::string
对象作为参数。它只有一个重载来接受两个char*
指针作为参数。
data
和c_str
都返回strcpy()
想要的东西。
相关文章:
- 如何检查模板类中的变量是否为字符串类型?
- C++类字符串类型的迭代器
- 如何将字符串指针数组转换为字符串类型的智能指针向量?
- 字符串类型的 2d 数组(C++;)
- 在 Rcpp 中的字符串类型之间转换时出错
- 为什么字符串类型会导致 c++ 程序无法运行?
- 如何将字符串类型转换为 ostringstream
- 当正斜杠运算符应用于C++中的字符串类型时,它会做什么
- 添加字符串类型的类成员会导致调用基类函数而不是子函数
- 我在 c++ 中声明字符串类型时遇到问题
- 对齐C++字符串类型问题 std::字符串到 TStr
- C++无符号字符串类型的正则表达式
- 当 JSON 值应为 INT 但以字符串类型发送时,RapidJSON 崩溃
- 如何使用 std::find 从向量的第一个元素中查找字符串<字符串对<字符串、字符串> >类型?
- 我想添加两个字符串类型的矩阵.用户将不会输入行数或列的数量.用户将仅输入数组
- 为什么数组(字符串类型)的大小是 24 字节,带有单个空格元素
- 如何根据定义的字符串类型在“std::cout”和“std::wcout”之间进行选择
- C++ 仅当模板为字符串类型时执行小写转换
- 字符串类型的 C++ 模板无法编译
- 如何使用新字符串而不是分配器创建自己的字符串类型向量?