string은 항상 변환할 때마다 검색하게 되고 설명마다 헷갈려서
한 방에 정리했다!

순서

1. std::string <-> char *
+) int <-> std::string

2. QString <-> char*
+) int <-> QString

3. std::string <-> QString

 

std::string : <string>
QString : <QString>
헤더 필요


1. std::string <-> char *

(1) std::string -> char*
string. c_str()이용

std::string stdstr = "hello";

const char* charstr = stdstr.c_str();

 

(2) char* -> std::string
std::string() 이용

const char* charstr = "hello";

std::string tempstr = std::string(charstr);

 

+) int -> std::string
to_string() 이용

int num = 123;

std::string intstr = to_string(num);

 

++) std::string -> int
stoi() 이용

int num = stoi("123");

 


2. QString <-> char*

(1) QString -> char*
myqstr.toStdString().c_str() 이용

toStdString은 3번과 같이 Qstring -> std::string으로 변환한다.
c_str() 은 1번과 같이 std::string -> char*을 변환한다.

더 편한 방법이 있던것 같은데,,, 기억이 안난다

Qstring Qstr = "hello";

const char* charstr = Qstr.toStdString().c_str(); 

 

(2) char* -> QString
QString() 이용

const char* charstr = "hello";
QString Qstr = QString(charstr);

 

+) QString -> int
Qstr.toInt() 이용

이 함수는 특이하게 잘 변환됐다는 변수의 주소값을 인자로 넣어주어

디버깅 또한 가능하게 해준다.

QString Qstr = "123";

bool convOK; // 잘 변환됐다는 변수

int num = Qstr.toInt(&convOK); // 잘 됐으면 convOK에 TRUE를 넣어주며 바꿔줌

if(!convOK) 에러처리; // FALSE라면 에러다

 


++) int -> QString

QString::number() 이용

int num = 123;

QString Qstr;
Qstr = QString::number(num);

실제 number함수 분석
QString::number(자료형 n, int base = 10);

자료형마다 정의가 되어있고
base 진법에 맞추어 변환해준다. default가 10진법이므로
위 예제에서는 그냥 num 넣어줌


number함수 분석
double을 원하는 자릿수에 맞춰서 출력해보자.

num = 123.456789
QString::number(double num, 'f', 2);

// 출력 : 123.45




3. std::string <-> QString

(1) std::string -> QString
QString::fromStdString() 이용

QString Qstr;
std::string stdstr = "hello";

Qstr = QString::fromStdString(stdstr);

 

(2) QString -> std::string
Qstr.toStdString() 이용

QString Qstr = "hello";
std::string stdstr;

stdstr = Qstr. toStdString();

 

 

+ Recent posts