2009-11-19 3 views
7

이것은 다소 어렵습니다. 알아낼 수 없습니다.C++ int와 string을 char로 변환 *

내가 INT 내가 숯불 *로 저장해야하는 문자열이의 INT는 진수에 있어야합니다

int a = 31; 
string str = "a number"; 
나는에 탭으로 분리 된 두를 둘 필요가

char *.

출력은 다음과 같이해야한다 : 적절한으로

1F  a number 
+0

참고 : 해당 형식으로 인쇄 할 필요가 없습니다. 나는 그걸 할 수있어. char *를 매개 변수로 사용하는 함수가 있습니다. 그 기능을 위해 사용할 수 있도록 변환해야합니다. – user69514

+0

숙제 같은 냄새가납니다. 그렇지? – outis

답변

20

포함 :이 같은

#include <sstream> 
#include <ostream> 
#include <iomanip> 

뭔가 :

std::ostringstream oss; 
oss << std::hex << a << '\t' << str << '\n'; 

복사의 결과 :

oss.str().c_str() 
,

c_str의 결과는 임시 (!) const char*이므로 함수가 char * 인 경우 변경 가능한 사본을 어딘가에 할당해야합니다. (아마도 std::vector<char>에 복사합니다.) I 16 진수로 숫자를 포맷 sprintf을 사용했습니다

+0

+1. 좋은 대답. –

+0

여기에 대한 대답은 – KeatsPeeks

+0

입니다.이 기능은 훌륭합니다. 감사. – user69514

2
#include <stdio.h> 

char display_string[200]; 
sprintf(display_string,"%X\t%s",a,str.c_str()); 

.

+0

요구 사항은 공간이 아닌 탭으로 구분됩니다. –

+0

가장 힘든 부분이 탭을 포함하지 않기 때문에 나는 downvote를 보증하지 않는다고 생각하지 않습니다 : -/ – Jacob

+0

1) sprintf_s는 표준이 아닙니다 - 2)이 방법은 C입니다. – KeatsPeeks

4

이 시도 :

int myInt = 31; 
const char* myString = "a number"; 
std::string stdString = "a number"; 

char myString[100]; 

// from const char* 
sprintf(myString, "%x\t%s", myInt, myString); 

// from std::string :) 
sprintf(myString, "%x\t%s", myInt, stdString.c_str()); 
+0

이것이 downvote를 얻은 이유를 알고 싶습니다. –

+0

'const char *'가 아닌'std :: string'으로 시작하십시오. –

+3

C again ............ – KeatsPeeks

1

str.c_str()이 null로 끝나는 C 문자열을 반환합니다.

참고 : 의견이 필요하지 않다고 답한 이후 주요 질문에 답하지 않았습니다.

0

"const char * myString ="숫자 ";" 은 비참한 프로그래머입니다. C 기초를 얻을 수 없기 때문에 C++로 돌진하고 그들이 이해하지 못하는 것에 대해 말하기 시작합니다.

"const char *"유형은 포인터입니다. "숫자"- 배열입니다. 포인터와 배열을 혼합합니다. 예, C++ 컴파일러는 때때로 덕트 입력을 허용합니다. 그러나 당신도 이해해야합니다 - 덕트 타이핑을하면 "연성"이 어디인지 이해하지 못합니다. 모든 프로그램은 덕트 테이프입니다.

관련 문제