منبع اصلی نوشتار زیر در این لینک قرار دارد

آموزش برنامه نویسی با C++ / Qt (قسمت دوازدهم)

در چند آموزش قبلی به QString پرداختیم که با مثال‌هایی از آن همراه بود. در این قسمت از آموزش ++C/Qt هم به معرفی بیشتر نکاتی در کار با QString خواهیم پرداخت در مثال زیر به بررسی نحوه مقایسه دو رشته متنی می‌پردازیم که توسط متدQString:: compare () قابل انجام است، اگر دو متغیر رشته‌ای را به دستور بالا بدهیم یک خروجی Integer خواهد داشت که این متغیر عدد صحیح اگر زیر عدد ۰ بود به این معنی است که رشته اول از دوم کوچک‌تر است اگر ۰ برگرداند به معنای مساوی بودن دو رشته خواهد بود و اگر خروجی برگردانده شده بزرگ‌تر از ۰ بود می‌توان نتیجه گرفت که رشته‌ اول از رشته دوم بزرگ‌تر است. تمامی مقایسه‌ها به صورت بررسی ارزش تک‌تک کاراکتر‌ها با هم از سمت چپ خواهد بود که در این بررسی کاراک‌تر A بزرگ‌تر از کاراک‌تر z خواهد بود.

#include <QTextStream>

#define STR_EQUAL 0

int main(void)
{
   QTextStream out(stdout);
   
   QString a = "Rain";
   QString b = "rain";
   QString c = "rainn";
   
   if (QString::compare(a, b) == STR_EQUAL) {
     out << "a, b are equal" << endl;
   } else {
     out << "a, b are not equal" << endl;
   }
   
   out << "In case insensitive comparison:" << endl;
   
   if (QString::compare(a, b, Qt::CaseInsensitive) == STR_EQUAL) {
     out << "a, b are equal" << endl;
   } else {
     out << "a, b are not equal" << endl;
   }     
   
   if (QString::compare(b, c) == STR_EQUAL) {
     out << "b, c are equal" << endl;
   } else {
     out << "b, c are not equal" << endl;
   }   

   c.chop(1);
   
   out << "After removing the new line character" << endl;
   
   if (QString::compare(b, c) == STR_EQUAL) {
     out << "b, c are equal" << endl;
   } else {
     out << "b, c are not equal" << endl;
   }            
   
   return 0;
}

در مثال بالا تمامی شرایط بررسی شده است در دستورات بالا حساسیت به حروف کوچک بزرگ مشخص شده است. برای بررسی بهتر متغیر ی تعریف شده است که معادل ۰ است و در کد‌ها به کار گرفته شده است. خروجی کد بالا به صورت زیر خواهد بود:

$ ./comparing 
a, b are not equal
In case insensitive comparison:
a, b are equal
b, c are not equal
After removing the new line character
b, c are equal

برای تبدیل کردن یک متغیر رشته‌ای به دیگر متغیرها از قبیل float، int و … می‌توان از دستورات زیر استفاده کرد:

کار کرد متد
از String به Long   toLong()
از String به Float  toFloat()
از String به Integer  toInt()
تبدیل انواع نتغیر عددی به String  setnum()

مثال: در دستور زیر از متد‌های بالا استفاده شده‌ است.

#include <QTextStream>

int main(void)
{
  QTextStream out(stdout);
   
  QString s1 = "12";
  QString s2 = "15";
  QString s3, s4;
  
  out << s1.toInt() + s2.toInt() << endl;
   
  int n1 = 30;
  int n2 = 40; 
  
  out << s3.setNum(n1) + s4.setNum(n2) << endl;
   
  return 0;
}

در مثال بالا با استفاده از toInt دو متغیر رشته‌ای S۱ و S۲ را به عدد صحیح تبدیل کرده و به خروجی اراسل داشته است و در بخش بعدی یک عدد Integer را با setNum به String تبدیل کرده است. که خروجی مثال بالا نیز به صورت زیر خواهد بود:

$ ./converts 
27
3040

موفق باشید.

ارسال نظر سریع



برچسب ها : , ,