ورود

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 حاوی کلمات مورد نظره! :چشمک: