View Full Version : سوال: split کردن رشته
AliRezaBeytari
یک شنبه 25 خرداد 1393, 11:52 صبح
سلام دوستان.
به این کد زیر نگاه کنید :
#include <iostream>
#include <string>
#include <tchar.h>
using namespace std
int main(int argc, _TCHAR* argv[])
{
string UserString;
for(;;)
{
getline(cin, UserString);
}
return 0;
}
من این برنامه رو با Visual Studio 2012 نوشتم.
حالا من میخوام بدونم چطور میتونم اون متغیر UserString رو بر اساس کاراکتر Space یا همون ' ' جدا یا همون Split کنم ؟؟!!!
خیلی ممنونم.
حامد مصافی
یک شنبه 25 خرداد 1393, 12:52 عصر
#include <iostream>
#include <string>
#include <tchar.h>
using namespace std
int main(int argc, _TCHAR* argv[])
{
string UserString;
for(;;)
{
getline(cin, UserString);
string seprator = " ";
size_t pos = 0;
string token;
while ((pos = s.find(seprator)) != string::npos) {
token = s.substr(0, pos);
// print token or pass to a function or etc...
cout << token << endl;
s.erase(0, pos + seprator.length());
}
cout << s << endl;
}
return 0;
}
AliRezaBeytari
یک شنبه 25 خرداد 1393, 13:21 عصر
خیلی ممنونم آقای مصافی ؛ فقط من یه مشکلی دارم.
مثلا کاربر عبارت Hello World رو وارد میکنه ؛ حالا من میخوام خونه 0 اون ، یعنی Hello رو به دست بیارم. چطور باید این کار رو کنم ؟؟!!!
خیلی ممنونم.
محمد فدوی
یک شنبه 25 خرداد 1393, 14:06 عصر
از این تابع استفاده کن:
#include <vector>
#include <string>
using namespace std;
void split(vector<string>& tokens, const string& str, char delim) {
int start = 0, end = 0;
while ((end = str.find(delim, start)) != string::npos) {
tokens.push_back(str.substr(start, end - start));
start = end + 1;
}
tokens.push_back(str.substr(start));
}
اینجوری:
string str = "Hello World";
vector<String> tokens;
split(tokens, str, ' ');
حالا tokens حاوی کلمات مورد نظره! :چشمک:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.