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();
'Programming > 기타' 카테고리의 다른 글
[Programming][Architecture] C# 비 동기 프로그래밍(async, await, Task) (0) | 2023.02.13 |
---|---|
[Programming][Architecture] Asynchronous Messaging Pattern (0) | 2023.02.11 |
[Programming][Architecture] Dependency Injection Design Pattern (0) | 2023.02.10 |
[Programming][C++] eigen 사용법 (선형대수 라이브러리) (0) | 2022.11.20 |