ورود

View Full Version : سوال: ذخیره مقادیر String در متغیر



shoniz
پنج شنبه 02 دی 1400, 12:05 عصر
سلام دوستان

من با Qt پروژه ای نوشتم.

من یک رشته از پرت سریال
20.74! 32.00@ 5.00* 50$ 99^ # دریافت میکنم به این شکل (فرمتش دست خودمه و میتونم تغییرش بدم).

که مثلا 20.74 دما هست و توی یه متغیر double ذخیره بشه. مثلا 32.00 رطوبت که این هم توی متغیر دخیره بشه و الی آخر.

من چطور میتونم این کار رو بکنم؟ باید تبدیل بشه به استراکت؟

sd702004
پنج شنبه 02 دی 1400, 12:48 عصر
سلام. اگر فرمت مشخصی داره میتونید از regular expression برای این کار استفاده کنید. regex ها هم در کتابخانه استاندارد خود C++‎ و هم بصورت مجزا در Qt وجود داره.

shoniz
پنج شنبه 02 دی 1400, 15:31 عصر
سلام. اگر فرمت مشخصی داره میتونید از regular expression برای این کار استفاده کنید. regex ها هم در کتابخانه استاندارد خود C++‎‎‎ و هم بصورت مجزا در Qt وجود داره.

میتونم فرمت رو به این صورت تغییر بدم

@t= 20.37 h= 32.01 c=5.01 l= 45 u= 0#

یا مدلای دیگه.

حالا من کدش رو باید چطور بنویسم؟

sd702004
پنج شنبه 02 دی 1400, 18:09 عصر
regex مبحث نسبتا مفصلیه. قبل از این که ببینیم آیا این روش مناسب هست یا خیر اگه الگوتون به این صورته که مثلا چند تا عبارت پشت سر هم نوشته شده و بعنوان مثال میدونید که اولی یک عدد صحیحه، دومی یک عدد اعشاری و... که کلا به regex نیست. کافیه ورودی تون صرفا شامل این موارد باشه و با یک کارکتر مناسب (مثلا اسپیس یا کاما یا هر کارکتر مناسب دیگری) از همدیگه جداشون کرده باشین. در این صورت با متد split در کلاس QString راحت میتونید این بخش‌ها رو از هم جدا کنید.

بعنوان مثال فرض کنید قراره سه تا مقدار a، ‏b و c که به ترتیب عدد صحیح، عدد اعشاری و استرینگ هست رو دریافت کنیم. کافیه ورودی مون به این صورت باشه:

45,9.75,aBcd

حالا با استفاده از دستور split اینا رو به یک آرایه سه عضوی تبدیل میکنیم و این سه تا مقدار رو به ترتیب در متغیرهای int، ‏double و QString ذخیره می‌کنیم. ‌(برای دو مورد اول باید به ترتیب از متدهای toInt()‎ و toDouble()‎ استفاده بشه.

shoniz
جمعه 10 دی 1400, 18:04 عصر
از همین تابع split استفاده کردم و جواب داد. البته یخورده هم خلاقیت بخرج دادم و بهتر شد.