2014-06-19 4 views
-3

를 호출 할 때 우리가 사용할 수 있습니다형식 문자열 ++ C#의 기능

function_name("This is test number: " + i); 

어떻게 그것을 C에서 할 수 ++? i 다음, 문자열 + i 정수라면, 당신은 실제로

function_name("This is test number: " + std::to_string(i)); 
+0

아래에 귀하의 의견을 말합니다 : 나는 그것을 호출하려고 해요 : Send ("Some text"+ var) var가 char * 일 때. 위의'i'는'char * '가되어야할까요? 두 개의 문자열을 연결하려고합니까? 또는 정수형을 문자열로 변환하고이 두 문자열을 연결하십시오.대부분의 사람들은 변수 네이밍을 선택한 후자를 가정합니다. – Praetorian

+0

호출하려는 함수의 프로토 타입과 질문에 연결하려는 값의 유형을 추가해야합니다. – Deduplicator

답변

0

는 지어다의 처음에 표현 당신은 운영자 +의 두 피연산자를 포함 할 새로운 문자열을 얻으려면

"This is test number: " + i 

을 고려하십시오. 따라서이 문자열은 메모리에 동적으로 할당되어야합니다. 문자열에 메모리를 동적으로 할당하는 유일한 표준 C++ 클래스는 std::string입니다. 그러나 피연산자 중 하나가 정수형 인 경우에는 operator +이 없습니다. 따라서 객체 i는 명시 적으로 std :: string 유형의 객체로 변환되어야합니다. 그것은

function_name("This is test number: " + std::to_string(i)); 

그러나 함수 유형 char *의 인수 다음 클래스 std::string를 사용할 수 없습니다를 받아들이는 것처럼 호출이 보일 것이다이 경우 표준 기능 std::to_string를 사용하여 수행 할 수 있습니다.

그래서 무엇이 필요합니까?

앞서 언급했듯이 함수를 호출하기 전에 문자 배열 자체를 할당해야합니다. 문자열 리터럴과 i에 저장된 숫자를 수용 할 수있는 배열을 정의했다고 가정 해 봅시다. 당신이

std::sprintf(s, "&s %i", "This is test number: ", i); 

function_name(s); 

당신은 동적 배열을 할당 할 수 쓸 수

char s[SOME_ENOUGH_SIZE]; 

. 예를 들어

char *s = new char[SOME_ENOUGH_SIZE]; 

위와 같은 방식으로 함수를 호출하십시오.

+0

감사합니다. 훌륭하게 작동합니다. 모든 사람들에게 감사드립니다. – jond000e

+0

@Deduplicator 그는 매개 변수의 형식이 char *이고 c_str()의 반환 형식이 const char *이기 때문에이 작업을 수행하지 않을 수 있습니다. –

+0

@Deduplicator 나는 c_str()의 리턴 타입이 const char * 인 반면 매개 변수의 타입은 char * 인 것을 반복한다. 정의되지 않은 동작을 사용하도록 제안합니다. –

5

function_namestd::string 인수를 취한다고 가정들 감사, 당신은 C++ 11 지원을 그 많은 요소에 의해 이동 된 배열을 생성합니다 (이 경우 기본 주소가 경계에 유지된다고 가정하면 가비지 데이터가 생성됩니다).

따라서 i=4 인 경우 문자열은 " is test number: "으로 전달되고 "This"은 삭제됩니다.

function_name("This is test number: " + std::to_string(i)); 

편집 : 당신이 표준 : : 문자열을 사용하여 위의 해결책 사용할 수있는 문자열을 연결하려는 경우

그래서, 당신은 i 논평했기 때문에하지 int 그래서이 더 이상 유효 할 수있다.

+0

내 기능은 입니다. int Send (char *); 그리고 내가 그것을 호출하려고 해요 : 보내기 ("일부 텍스트를"+ VAR) VAR 인 경우 문자 * – jond000e

+0

이쪽을 봐 @vitalibrizak : http://stackoverflow.com/questions/5172107/c-string -and-int-concatenation – Brian

0

사용할 수 있습니다

당신에게