Подтвердить что ты не робот

Как скопировать 2 строки строкового типа данных

Как скопировать 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 &)

4b9b3361

Ответ 1

Вы не должны использовать strcpy для копирования std::string, используйте его только для строк C-Style.

Если вы хотите скопировать a в b, просто используйте = operator.

string a = "text";
string b = "image";
b = a;

Ответ 2

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"

Ответ 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 ;

Ответ 4

Решение 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.