কিউ স্ট্রিং-এ কীভাবে রূপান্তর করবেন?


উত্তর:


656

ব্যবহার QString::number():

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

2
এখানে আরও আকর্ষণীয় প্রশ্ন: একটি দ্রুত উপায় আছে? আমি একটি সমস্যার মুখোমুখি হয়েছি যেখানে এই সংস্করণটি পুরো প্রক্রিয়াটির পরে প্রায় বেশি সময় নেয় ...
জেকস

তারপরে আপনি সম্ভবত প্রাক-বরাদ্দযুক্ত বাফারগুলিতে কাজ করতে চান ... তবে এটি আলাদা প্রশ্নের মতো মনে হচ্ছে।
জর্জি ফ্রিত্শে

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 :: সংখ্যা (1); কি কিস্ট্রিং হ'ল পুরোপুরি কাজ করে। সুতরাং, মূলত কিউস্ট্রিং + কিউস্ট্রিং ঠিক আছে, কিউস্ট্রিং + ইনট খারাপ
ডেভিড সানচেজ

28

এছাড়াও আপনি যা চান রূপান্তর করতে, আপনি ব্যবহার করতে পারেন QVariant। একের intজন্য QStringআপনি পাবেন:

QVariant(3).toString();

একটি floatথেকে একটি stringবা একটি stringথেকে একটি float:

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

1
QVariantrulez!
মিঃ কফি

আমাকে বাদাম ডাকুন, তবে "হালকা ওজনের রূপান্তরগুলির মূল উত্তর হিসাবে এবং বিশেষ চিকিত্সার জন্য অন্যান্য উত্তরগুলির হিসাবে," কিউ স্ট্রিংয়ে কোনও সংখ্যাকে রূপান্তর করবেন? "হিসাবে আমি আরও প্রশ্নটি ব্যবহার করব get
মিঃ3

17

তবুও অন্য বিকল্পটি হ'ল কিউ টেক্সটস্ট্রিম এবং <<অপারেটরটি আপনি একইভাবে ব্যবহার করুন যেমন আপনি coutসি ++ তে ব্যবহার করবেন :

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

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

অপারেটরটি <<()ওভারলোড হয়ে গেছে বলে আপনি এটি একাধিক ধরণের জন্য ব্যবহার করতে পারেন intQString::arg()উদাহরণস্বরূপ arg(int a1, int a2), অতিরিক্ত লোড করা হয়েছে তবে এটি নেই arg(int a1, QString a2), সুতরাং মিশ্র প্রকারের সাথে দীর্ঘতর স্ট্রিংগুলিকে বিন্যাস করার সময় ব্যবহার QTextStream()এবং অপারেটর <<সুবিধাজনক।

সাবধানতা:sprintf() সি স্টাইলের 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

এটি সর্বাধিক সহজ আকারে, জর্জি ফ্রিটস্কের উত্তরটি ব্যবহার করুন

কিছুটা অগ্রসর হওয়ার জন্য, আপনি এটি ব্যবহার করতে পারেন,

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

ডকুমেন্টেশন এবং একটি উদাহরণ পান এখানে ..


দুর্ভাগ্যক্রমে, নোকিয়া সাইটের লিঙ্কটি আর কাজ করে না।
এলিয়াহু স্কোকজিলাস

3

কেবল সম্পূর্ণতার জন্য, আপনি স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করতে পারেন এবং করতে পারেন QString qstr = QString::fromStdString(std::to_string(42));


3

আপনার যদি স্থানীয়-সচেতন নম্বর বিন্যাসের প্রয়োজন হয় তবে এর পরিবর্তে QLocale :: toString ব্যবহার করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.