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
'programing' 카테고리의 다른 글
스택 또는 힙에서 C ++의 글로벌 메모리 관리? (0) | 2020.10.31 |
---|---|
어떤 iOS SDK가 있는지 어떻게 확인합니까? (0) | 2020.10.31 |
2D 배열 Python의 길이 찾기 (0) | 2020.10.31 |
목록에서 빈 문자열을 제거한 다음 목록에서 중복 값을 제거하는 방법 (0) | 2020.10.31 |
String.Contains를 대소 문자를 구분하지 않는 방법? (0) | 2020.10.31 |