programing

QString을 포맷하는 방법?

nasanasas 2020. 10. 31. 09:48
반응형

QString을 포맷하는 방법?


Qt 레이블의 문자열 형식을 지정하고 싶습니다. Qt에서 C ++로 프로그래밍하고 있습니다.

ObjC에서는 다음과 같이 작성합니다.

NSString *format=[NSString stringWithFormat: ... ];

Qt에서 어떻게 그렇게 할 수 있습니까?


다음과 같이 QString.arg를 사용할 수 있습니다.

QString my_formatted_string = QString("%1/%2-%3.txt").arg("~", "Tom", "Jane");
// You get "~/Tom-Jane.txt"

이 방법은 다음과 같은 이유로 sprintf보다 선호됩니다.

대체 순서를 변경하지 않고 문자열 위치 변경, 예 :

// To get "~/Jane-Tom.txt"
QString my_formatted_string = QString("%1/%3-%2.txt").arg("~", "Tom", "Jane");

또는 인수 유형을 변경해도 형식 문자열을 변경할 필요가 없습니다. 예 :

// To get "~/Tom-1.txt"
QString my_formatted_string = QString("%1/%2-%3.txt").arg("~", "Tom", QString::number(1));

보시다시피 변화는 미미합니다. 물론 대부분의 유형이 올바르게 오버로드되기 때문에 일반적으로 QString :: arg ()에 전달되는 유형에 대해 신경 쓸 필요가 없습니다.

하지만 한 가지 단점 : QString :: arg ()는 std :: string을 처리하지 않습니다. QString :: arg ()에 전달하기 전에 std :: string에서 QString :: fromStdString ()을 호출하여 QString으로 만듭니다. std :: string을 사용하는 클래스에서 QString을 사용하는 클래스를 분리하십시오. 또는 가능하다면 모두 QString으로 전환하십시오.

업데이트 : Frank Osterfeld 덕분에 예제가 업데이트되었습니다.

업데이트 : alexisdm 덕분에 예제가 업데이트되었습니다.


sprintf방법을 사용할 수 있지만 arg유니 코드를 지원 하는 방법이 선호됩니다.

QString str;
str.sprintf("%s %d", "string", 213);

QString::arg()같은 효과를 위해 사용하십시오 .

참고 URL : https://stackoverflow.com/questions/4784155/how-to-format-a-qstring

반응형