ورود

View Full Version : سوال: پیدا کردن یک کاراکتر Vector



-Geek-
دوشنبه 04 خرداد 1394, 12:39 عصر
چطوری میتونم از find استفاده کنم طوری که بخوام یک کاراکتر رو پیدا بکنم ؟
مثلا تو کد زیر 3 آیتم توی myvector هست که دو تا از این آیتم ها کاراکتر ^ توشون هست.
حالا من میخوام یک کد بنویسم که این نوع کاراکتر ها رو پیدا و حذف بکنه.
اشتباه من در کد زیر چیه ؟


#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main () {
vector<string> myvector;
vector<string>::iterator it;

myvector.push_back("a^b");
myvector.push_back("a");
myvector.push_back("cd^");

myvector.erase(find (myvector.begin(), myvector.end(), "^"));

for (unsigned i=0; i<myvector.size(); i++)
std::cout << ' ' << myvector.at(i) << "\t";

return 0;
}

rahnema1
دوشنبه 04 خرداد 1394, 16:47 عصر
سلام
شما می خواهید کل کلمه حذف بشه یا فقط حرف ^ از اون کلمه حذف بشه؟

-Geek-
دوشنبه 04 خرداد 1394, 17:26 عصر
بله فقط میخوام "^" حذف بشه .
مشکل رفع شد و اینطوری تونستم سوال رو حل بکنم.


#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main () {
vector<string> myvector;

myvector.push_back("a^b");
myvector.push_back("a");
myvector.push_back("c^d^");
for(string& str : myvector)
str.erase(remove(str.begin(), str.end(), '^'),str .end());

for(auto& str : myvector)
cout << str << "\t";
return 0;
}

-Geek-
دوشنبه 04 خرداد 1394, 22:52 عصر
ولی اگه بخوایم فقط موقعیت یک کاراکتر داخل یک آیتم رو پیدا کنیم چه روشی میتونه خوب باشه ؟
در روش بالا با استفاده از remove اومدیم کاراکتر ^ رو پیدا و حذفش کردیم . ولی من یه روش هم میخوام که بدون حذف اون کاراکتر، موقعیتشو پیدا کنم.
مثلا توی این خط کد
myvector.push_back("a^b");
موقعیت ^ یک هست.

-Geek-
دوشنبه 04 خرداد 1394, 22:55 عصر
فکر کنم جواب سوالم یکی از توابع search یا search_n باشه.

rahnema1
دوشنبه 04 خرداد 1394, 23:08 عصر
کلاس string یک تابع داره به نام find از اون استفاده کنید:
http://www.cplusplus.com/reference/string/string/find

-Geek-
دوشنبه 04 خرداد 1394, 23:42 عصر
عالی بود.
اولش با وکتور امتحانش کردم (کار احمقانه ای بود) ولی کار نکرد.
بعدش همین کد زیر به روش زیر به فکرم خورد که جواب داد.


for(auto& word : myvector)
cout << word.find("c");


البته بدون include کردن کتابخانه تونستم از این تابع استفاده کنم. حالا پیدا کردم که از کتابخانه iostream هستش.
یعنی چی‌؟ مگه میشه ؟؟؟
بازم ممنون :)

rahnema1
دوشنبه 04 خرداد 1394, 23:53 عصر
داخل هدر string هست. چون در iostream از string استفاده شده دیگه لازم نیست هدر string را include کنیم