Ответ 1
Вы не должны использовать strcpy для копирования std::string, используйте его только для строк C-Style.
Если вы хотите скопировать a
в b
, просто используйте = operator
.
string a = "text";
string b = "image";
b = a;
Как скопировать 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 &)
Вы не должны использовать strcpy для копирования std::string, используйте его только для строк C-Style.
Если вы хотите скопировать a
в b
, просто используйте = operator
.
string a = "text";
string b = "image";
b = a;
strcpy предназначен только для строк C. Для std::string вы копируете его как любой объект С++.
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: %s\n",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());
Просто вызовите функции-члены data()
или c_str()
класса std::string
, чтобы получить указатель char*
для строкового объекта.
Функция strcpy не имеет перегрузки для приема двух объектов std::string в качестве параметров.
Он имеет только одну перегрузку для принятия двух указателей char*
в качестве параметров.
Оба data
и c_str
возвращают то, что требуется strcpy
.