2011-11-24 4 views
5

나는 QString을 사용하고 :: 수를() 다음보다 더 나은 뭔가가 있다면, 지금 내가 궁금하네요 오랫동안 문자열로 숫자를 변환 :arg()를 사용하여 QString에 숫자를 추가하는 것이 더 나은 방법일까요?

int i = 0; 
    QString msg = QString ("Loading %1").arg (QString::number (i)); 

은 어떻게 마련 할 수 QString :: 수 ()? 내가 보인다는 "% 1"적용 "% d 개"와 같은 다른 물건을 직접처럼 arg()을 사용할 수 있습니다

+0

동기는 무엇입니까? 타이핑이나 다른 것을 저장 하시겠습니까? –

+0

@r_ahlskog, 예, 일종의, 그리고 형식 문자열과 같은'printf'가 가능하다면 생각하고 있어요 – daisy

+0

@r_ahlskog, % 1 꽤 일반적으로 보입니다. – daisy

답변

8

를 작동하지 않을 수있는 문서를 확인이

Qt는 자동으로

을 위해 그것을 변환합니다
int i = 0; 
QString msg = QString ("Loading %1").arg(i); 
0

QString 문서를 살펴보십시오. 당신은 :: arg 메서드 오버로드가 많이 있는데, 다른 타입을 취합니다. QString은 어떤 타입이 % n 아래에 있을지 알 필요가 없으며, 그 % n을 대체하는 메소드는이를 알고 알맞은 값을 넣을 것입니다.

10

QString의 arg() 함수는 실제로 많은 다른 유형을 구현하고 사용자가 제공 한 것을 자동으로 감지합니다. 그래서

// Outputs "one two three" 
QString s = QString("%1 %2 %3").arg("one", "two", "three") 

같은 단일 통화 arg() 여러 매개 변수를 제공하는 경우에만 구현 QString (따라서 const char*) 파라미터이다.

그러나, 당신은 할 수 체인 인수 함께 호출하고 여전히 번호 체계 사용

int i = 5; 
size_t ui = 6; 
int j = 12; 
// Outputs "int 5 size_t 6 int 12" 
qDebug() << QString("int %1 size_t %2 int%3").arg(i).arg(ui).arg(j); 
// Also outputs "int 5 size_t 6 int 12" 
qDebug() << QString("int %1 int %3 size_t %2").arg(i).arg(j).arg(ui); 
관련 문제