2012-10-22 3 views
-4

내가 파이썬에서 문자열 x='wow'이 있다면, 난 그렇게처럼 __add__ 기능을 사용하여 자신이 문자열을 연결할 수 있습니다 :간단한 문자열 연결

x='wow' 
x.__add__(x) 
'wowwow' 

가 어떻게 C++에서이 작업을 수행 할 수 있습니다?

+5

'x + = x;'는 어떻습니까? 사실 아주 직관적입니다. – chris

+0

이것은 간단한 질문입니다. – jogojapan

+1

(1) 네 가지 모두 네 가지 대답이 잘못되었습니다. (2) 질문의 마감이 잘못되었습니다. 이런. –

답변

7

의미 적, 파이썬 코드의 상당

std::string x = "wow"; 
x + x; 

xx의 연결이 임시 문자열을 생성하고 결과를 던져 같은 것입니다. 다음 작업을 수행 할 것 x에 추가하려면

std::string x = "wow"; 
x += x; 

참고 따옴표 ". 파이썬과는 달리 C++에서는 작은 따옴표가 단일 문자에 사용되며 큰 따옴표로 묶인 문자열 리터럴에 대해서는 큰 따옴표가 사용됩니다.

참조 : std::string 참조.

그런데 파이썬에서는 보통 __add__() 메서드를 호출하지 않습니다. 당신은 최초의 C++ 예에 해당하는 구문을 사용

x = 'wow' 
x + x 

__add__() 방법은 클래스의 "플러스"연산자를 제공하는 단지 파이썬 방법입니다.

+0

덕분에 유용했다 –

+0

질문은'__add__'에 관한 것이고, + +는 C++에서'+'이며,'+ ='는 아닙니다. –

+0

@ daknøk 귀하의 요지를 봅니다. 제목에 "문자열에 추가"라고 표시되지만 코드는 두 개의 문자열을 연결하고 그 결과를 반환합니다. 나는 나의 예를 고칠 것이다. – juanchopanza

3

당신은 operator <<std::stringoperator+ 또는 operator+= 또는 std::stringstream를 사용할 수 있습니다.

std::string x("wow"); 
x = x + x; 
//or 
x += x; 

여기도 std::string::append입니다.

+0

덕분에 도움이되었다 –

1
std::string x = "wow" 
x = x + x; 
3

당신은 C++에서 문자열을 연결하는 + 연산자를 사용할 수 있습니다

std::string x = "wow"; 
x + x; // == "wowwow" 

파이썬에서 당신은 대신 __add__+ 사용할 수 있습니다 (그리고 +.__add__보다 파이썬 간주됩니다) :

x = 'wow' 
x + x # == 'wowwow' 
+0

그래서 C++에서 파이썬의'x .__ add __ (x)'에 해당하는 것은'operator + (x, x)'일 것입니다, 맞습니까? 문자열에 대한'+'가 멤버가 아닌지 확실하지 않습니다. _Sigh._) – sbi

+0

@sbi 예, 파이썬의'__add__'은 C++의'operator +'와 같습니다. –

-2

일반적으로 두 개의 별개의 문자열을 연결할 때 단순히 0을 사용할 수 있습니다 당신이 추가 할 문자열에에 :

string a = "test1"; 
string b = "test2"; 

a += b; 

제대로 a=="test1test2"

그러나이 경우 당신은 단순히 그 자체에 문자열을 추가 할 수 없습니다 얻을 때문에 추가 변경하는 행위 소스 둘 것 목적지.즉, 이것은 잘못된 것입니다 :

string x="wow"; 
x += x; 

대신, 간단한 해결책은 단지 (자세한 선명도) 임시을 만드는 것입니다 :

string x = "wow"; 
string y = x; 
y += x; 

... 다음이를 다시 교환 :

x = y; 
+0

'x + = x '가 왜 잘못 되었습니까? 표준 * 그것을 작동하는 데 필요합니다. –

+0

@ R.MartinhoFernandes : 어디서? –

+1

'operator + ='의 효과는 §21.4.6.2/9에 설명 된'char const * '와 크기를 취하는 append 함수와 동일하게 정의됩니다. 그것은 어떤 방식 으로든 작동하는 방식으로 말입니다. –