如何复制2个字符串(这里我指的是字符串数据类型)。我使用了strcpy
函数,只有在
char a[7]="text";
char b[5]="image";
strcpy(a,b);
但每当我使用
string a="text";
string b="image";
strcpy(a,b);
我收到此错误
functions.cpp没有匹配函数来调用`strcpy(std :: string&,std :: string&)
答案 0 :(得分:37)
你不应该使用strcpy来复制std :: string,只能将其用于C-Style strings。
如果您要将a
复制到b
,请使用= operator
。
string a = "text";
string b = "image";
b = a;
答案 1 :(得分:11)
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"
答案 2 :(得分:3)
strcpy示例:
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[]="Sample string" ;
char str2[40] ;
strcpy (str2,str1) ;
printf ("str1: %s\n",str1) ;
return 0 ;
}
输出:str1: Sample string
您的情况:
一个简单的=
运算符应该可以胜任。
string str1="Sample string" ;
string str2 = str1 ;
答案 3 :(得分:2)
凯撒的解决方案在我看来是最好的,但是如果您仍然坚持使用strcpy
功能,那么在准备好琴弦之后:
string a="text";
string b="image";
您可以尝试:
strcpy(a.data(), b.data());
或强>
strcpy(a.c_str(), b.c_str());
只需调用data()
类的c_str()
或std::string
成员函数,即可获得字符串对象的char*
指针。
strcpy函数没有重载来接受两个std :: string对象作为参数。
它只有一个重载来接受两个char*
指针作为参数。
data
和c_str
都会返回strcpy
完全想要的内容。