int를 QString으로 변환하는 방법?


답변:


656

사용 QString::number():

int i = 42;
QString s = QString::number(i);

2
더 흥미로운 질문이 있습니다. 더 빠른 방법이 있습니까? 이 버전이 이후 전체 프로세스보다 거의 시간이 더 걸리는 문제가 발생했습니다.
Zeks

그런 다음 사전 할당 버퍼에서 작업하고 싶을 수도 있지만 ... 이것은 별도의 질문처럼 들립니다.
Georg Fritzsche

122

그리고 텍스트 컨텍스트 내에서 문자열에 넣으려면 +연산자를 잊어 버리십시오 . 간단히 :

// Qt 5 + C++11
auto i = 13;    
auto printable = QStringLiteral("My magic number is %1. That's all!").arg(i);

// Qt 5
int i = 13;    
QString printable = QStringLiteral("My magic number is %1. That's all!").arg(i);

// Qt 4
int i = 13;    
QString printable = QString::fromLatin1("My magic number is %1. That's all!").arg(i);

2
당신이 언급 때문에 +운영자,주의 주위 정수, 그것은 아주 잘 내부적으로 작동하지만 수 있으므로를의 operator+(const QString &s, char c)구현이라고하며, 문자열 수 있지만 같은 정수가 포함 못해 QChar::fromAscii(c)해당
x29a

3
+ 연산자를 언급 했으므로 실제로 수행 할 수 있지만 무슨 일이 일어나고 있는지 이해하십시오. QString p = s + QString :: number (1); sa QString은 완벽하게 작동합니다. 따라서 기본적으로 QString + QString은 괜찮습니다. QString + int bad 입니다.
David Sánchez

28

또한 원하는 것을 변환하려면을 사용할 수 있습니다 QVariant. 를 들어 intA와 QString당신이 얻을 :

QVariant(3).toString();

A float에 a string또는 a string에 a float:

QVariant(3.2).toString();
QVariant("5.2").toFloat();

1
QVariant룰즈!
Mr.Coffee

견과류라고 부르지 만, "숫자를 QString으로 변환하는 방법?", 경량 변환의 주요 대답 및 특수 처리의 다른 대답으로 더 많이 사용됩니다.
mr3

17

또 다른 옵션은 QTextStream<<연산자 cout를 C ++에서 사용하는 것과 거의 같은 방식으로 사용 하는 것입니다 .

QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";

// OUTPUT:
// Mouse click: (5, 1).

연산자 <<()가 오버로드 되었기 때문에 연산자 뿐만 아니라 여러 유형에 사용할 수 있습니다 int. QString::arg()예를 들어 오버로드 arg(int a1, int a2)되지만,가 없으므로 혼합 유형으로 긴 문자열을 형식화 할 때 및 연산자를 arg(int a1, QString a2)사용 하면 편리합니다.QTextStream()<<

주의 :sprintf() C 스타일 printf()명령문 을 모방하기 위해이 기능 을 사용하고 싶을 수도 있지만 유니 코드를 지원 QTextStream하거나 사용하는 것이 좋습니다 .arg()string


14

나는 항상 사용 QString::setNum()합니다.

int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);

setNum()여러 가지 방법으로 오버로드됩니다. QString클래스 참조를 참조 하십시오 .


12

가장 간단한 형태로 Georg Fritzsche 의 답변을 사용하십시오.

조금 발전된 경우에는 이것을 사용할 수 있습니다.

QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

문서 및 예제 받기 여기를 ...


불행히도 Nokia 사이트 링크는 더 이상 작동하지 않습니다.
Eliyahu Skoczylas

3

완벽을 기하기 위해 표준 라이브러리를 사용하여 QString qstr = QString::fromStdString(std::to_string(42));


3

로케일 인식 숫자 형식이 필요한 경우 QLocale :: toString을 대신 사용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.