이것은 다소 어렵습니다. 알아낼 수 없습니다.C++ int와 string을 char로 변환 *
내가 INT 내가 숯불 *로 저장해야하는 문자열이의 INT는 진수에 있어야합니다
즉
int a = 31;
string str = "a number";
나는에 탭으로 분리 된 두를 둘 필요가
char *.
출력은 다음과 같이해야한다 : 적절한으로
1F a number
이것은 다소 어렵습니다. 알아낼 수 없습니다.C++ int와 string을 char로 변환 *
내가 INT 내가 숯불 *로 저장해야하는 문자열이의 INT는 진수에 있어야합니다
즉
int a = 31;
string str = "a number";
나는에 탭으로 분리 된 두를 둘 필요가
char *.
출력은 다음과 같이해야한다 : 적절한으로
1F a number
포함 :이 같은
#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을 사용했습니다
#include <stdio.h>
char display_string[200];
sprintf(display_string,"%X\t%s",a,str.c_str());
.
요구 사항은 공간이 아닌 탭으로 구분됩니다. –
가장 힘든 부분이 탭을 포함하지 않기 때문에 나는 downvote를 보증하지 않는다고 생각하지 않습니다 : -/ – Jacob
1) sprintf_s는 표준이 아닙니다 - 2)이 방법은 C입니다. – KeatsPeeks
이 시도 :
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());
이것이 downvote를 얻은 이유를 알고 싶습니다. –
'const char *'가 아닌'std :: string'으로 시작하십시오. –
C again ............ – KeatsPeeks
str.c_str()
이 null로 끝나는 C 문자열을 반환합니다.
참고 : 의견이 필요하지 않다고 답한 이후 주요 질문에 답하지 않았습니다.
"const char * myString ="숫자 ";" 은 비참한 프로그래머입니다. C 기초를 얻을 수 없기 때문에 C++로 돌진하고 그들이 이해하지 못하는 것에 대해 말하기 시작합니다.
"const char *"유형은 포인터입니다. "숫자"- 배열입니다. 포인터와 배열을 혼합합니다. 예, C++ 컴파일러는 때때로 덕트 입력을 허용합니다. 그러나 당신도 이해해야합니다 - 덕트 타이핑을하면 "연성"이 어디인지 이해하지 못합니다. 모든 프로그램은 덕트 테이프입니다.
참고 : 해당 형식으로 인쇄 할 필요가 없습니다. 나는 그걸 할 수있어. char *를 매개 변수로 사용하는 함수가 있습니다. 그 기능을 위해 사용할 수 있도록 변환해야합니다. – user69514
숙제 같은 냄새가납니다. 그렇지? – outis