PDA

View Full Version : راهنمایی در مورد String و آرایه



shahin-h
دوشنبه 13 مرداد 1393, 15:36 عصر
سلام
من یک String دارم ،میخوام هر یک خط از این String توی یه خونه ای از آرایه قرار بگیره که وقتی هر خونه از آرایه

رو صدا زدم محتویاتش که میشه همون خط رو برام نمایش بده.

tux-world
دوشنبه 13 مرداد 1393, 21:46 عصر
خوب؟
الان مشکلتون چیه؟ چیکار کنیم این موردی رو که گفتید؟؟

returnx
دوشنبه 13 مرداد 1393, 22:12 عصر
از QStringList به عنوان آرایه استفاده کنید و از متد Split کلاس QString برای جدا سازی خطوط استفاده کنید به این صورت :

QString temp="Somtext \n Another text!";
QStringList i_string_array=temp.split("\n");
foreach (QString item, i_string_array)
{
qDebug()<<item;
}

ciph3r
سه شنبه 14 مرداد 1393, 12:14 عصر
سلام دوستان
حالا بنده یه سوال دارم تو همون مایه ها
من یه فایل .txt دارم که توش آدرس وب سایت هستش
می خواهم لیست رو بخونم و دونه دونه از آدرس هارو GET کنم
حالا این رو گزاشتم تو حلقه فور
فقط یک مسئله هستش اینه که می خوام خط به خط اون فایل رو در ایندکس ارایه بزارم
تا جای که گشتم دیدم QVector به دردم نمیخوره
می خوایتم ببینم از QStringList چجوری برای این مورد میشه استفاده کرد
یا اینکه راه بهتری سراغ دارین بهتر از QstringList
ممنون و سپاس گزارم

returnx
سه شنبه 14 مرداد 1393, 14:52 عصر
به دو صورت میشه این کارُ انجام داد : 1- اول کل فایل را بخوانید و در یک متغیر Qstring برزید و بعد متغیر را split کنید که این روش برای فایل های بزرگ جواب نمیده ،
روش 2- خط به خط فایل را بخوانید و به یک QstingList خطوط را اضافه کنید به این شکل :
QFile i_file("File Address");
QStringList i_list;
if (i_file.open(QIODevice::ReadOnly|QIODevice::Text))
{
QString line;
while (!i_file.atEnd())
{
line=QString(i_file.readLine());
i_list.append(line);
}
i_file.close();
}
else
{
throw std::runtime_error("Can't Open file!");
}

foreach (QString item, i_list)
{
cout<<item.toStdString()<<"\n" ;
}

ciph3r
سه شنبه 14 مرداد 1393, 15:30 عصر
ممنون دوست عزیز بابت جواب و راهنمایی درستتون
خوب من یک مشکل دارم که فکر کنم مشکل از خودم باشه تا الگریتمی که میرم
من به روش شما عمل کردم
:
QFile i_file("C:/1.txt"); QStringList i_list; if (i_file.open(QIODevice::ReadOnly|QIODevice::Text)) { QString line; while (!i_file.atEnd()) { line=QString(i_file.readLine()); i_list.append(line); } i_file.close(); }// else// {// throw std::runtime_error("Can't Open file!");// } foreach (QString item, i_list) { qDebug()<<item.at(1); }



ولی متاسفنه جولب رو به صورت زیر نشون میده


_MinGW_4_4__Qt_SDK__Release\release\Login_page_fin der.exe...
'm'
'm'
's'
'm'
's'
'm'
's'
's'

به جای اینکه اینطوری نشون بده :

www.site.com/administrator

چون اینی که نوشتم در خط اول فایل .txt می باشد

returnx
سه شنبه 14 مرداد 1393, 18:05 عصر
شما باید به این نکته توجه کنید که تکه کدی که گذاشتم فقط فایلُ خط به خط میخونه و میریزه تو QStringList نه بیشتر ، یعنی ما کدی برای پیدا کردن URL ها ننوشتیم....
با این حال دقیقا متوجه منظورتون نشدم ، لطفا قسمتی از محتوای فایلتون را هم قرار بدید...