48

この関数を使用しましたが、次のstrcpy()ような C 文字列配列を使用する場合にのみ機能します。

char a[6] = "text";
char b[6] = "image";
strcpy(a,b);

しかし、私が使用するたびに

string a = "text";
string b = "image";
strcpy(a,b);

次のエラーが表示されます。

functions.cpp: 呼び出しに一致する関数がありませんstrcpy(std::string&, std::string&)

C++で文字列データ型の2つの文字列をコピーするには?

4

4 に答える 4

70

strcpy()をコピーするために使用しないでください。C スタイルの文字列std::stringにのみ使用してください。

aコピーしたい場合は、演算子bを使用してください。=

string a = "text";
string b = "image";
b = a;
于 2012-10-01T18:25:39.113 に答える
18

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"

于 2012-10-01T18:25:37.170 に答える
4

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 ;
于 2012-10-01T18:42:26.623 に答える