Chcę "stringify" liczbę i dodać zero-dopełnienie, tak jak printf("%05d")
będzie dodać wiodące zera, jeśli liczba jest mniejsza niż 5 cyfr.Konwersja int do QString z zerowym dopełnieniem (zera wiodące)
Odpowiedz
Użyj tego:
QString number = QString("%1").arg(yourNumber, 5, 10, QChar('0'));
5, odpowiada 5 w printf("%05d")
. 10 to podstawa, możesz umieścić 16, aby wydrukować liczbę na heksach.
Próbowałem tego (co działa, ale niewygodne).
QString s;
s.setNum(n,base);
s = s.toUpper();
presision -= s.length();
while(presision>0){
s.prepend('0');
presision--;
}
Spróbuj:
QString s = s.sprintf("%08X",yournumber);
EDIT: Zgodnie z docs na http://qt-project.org/doc/qt-4.8/qstring.html#sprintf:
Ostrzeżenie: Nie zaleca się korzystania QString :: sprintf() w nowy Kod Qt. Zamiast tego należy rozważyć użycie QTextStream lub arg(), które obsługują ciągi Unicode bezproblemowo i są bezpieczne dla typu. Oto przykład, który używa QTextStream:
QString result;
QTextStream(&result) << "pi = " << 3.14;
// result == "pi = 3.14"
Przeczytaj inne dokumenty dla funkcji brakujące od tej metody.
fajnie, nie oznaczając jako najlepszej poprawki, ponieważ aktualnie zaznaczona odpowiedź jest bardziej elastyczna. Ale miło wiedzieć! (upvoting) – elcuco
Short przykład:
int myNumber = 9;
//Arg1: the number
//Arg2: how many 0 you want?
//Arg3: The base (10 - decimal, 16 hexadecimal - if you don't understand, choose 10)
// It seems like only decimal can support negative numbers.
QString number = QString("%1").arg(myNumber, 2, 10, QChar('0'));
Output will be: 09
użyć techniki od VB 5
QString theStr=QString("0000%1").arg(theNumber).right(4);
Dużo memcpy() i dziennik zmarnowanej pamięci/procesora. Jeśli używasz Qt/C++, który chcesz wydajności (powiedział, widziałem tę sztuczkę za pomocą JS, a to dobry hack na tej platformie). – elcuco
Nie poddawaj się !! –
QString QString :: rightJustified (Int szerokość QChar napełnienia = QLatin1Char (''), bool truncate = false) const
int myNumber = 99;
QString result;
result = QString::number(myNumber).rightJustified(5, '0');
wynikiem jest teraz 00099
dziękuję, tworzę ciąg w locie używając + =, więc wybrane rozwiązanie nie może być użyte. –
- 1. Konwersja qint64 do QString
- 2. Java dodaje zera wiodące do numeru
- 3. Jak przekonwertować QString do int?
- 4. Jak mogę wyprowadzić wiodące zera w Ruby?
- 5. Python dodaje wiodące zera za pomocą str.format
- 6. Konwersja int ** do const int **
- 7. Dlaczego wiodące zera są używane do reprezentowania liczb ósemkowych?
- 8. Jak przekonwertować int na QString?
- 9. Konwersja int int *, a następnie z powrotem do int
- 10. Konwersja int do CGFloat
- 11. Konwersja int do booleans
- 12. Konwersja kolumnę mysql z INT do TIMESTAMP
- 13. Konwersja QVariant niestandardowego typu na QString
- 14. Konwersja z int RGB, HEX
- 15. ListView scrollbarStyle z marginesem/dopełnieniem
- 16. Problem z dopełnieniem szablonu TextBox
- 17. Char do QString
- 18. Wyjście QVector3D do QString
- 19. Konwersja typu Int
- 20. Konwersja Json.Net JValue int
- 21. Serwer SQL: konwersja varchar do INT
- 22. Konwersja BitSet int
- 23. konwersja podwójna na int
- 24. niejawna konwersja float/int
- 25. Konwersja wszystkie sznurki w liście do int
- 26. JNI: konwersja unsigned int do jint
- 27. JSON stringify konwersja float do int
- 28. Konwersja double do int, zaokrąglona w dół
- 29. kompilacji Konwersja uint do int w C#
- 30. Konwersja bajt lub int do bitset
Dzięki. Dokumentacja [tutaj] (http://qt-project.org/doc/qt-4.8/qstring.html#arg-10). – migas
Bardzo przydatne do tworzenia kodów kolorów szesnastkowych z liczby całkowitej, dzięki :) – Michal
I dlaczego argumentem łańcuchowym jest '"% 1 "'? – dhein