تمام سوالات سوالات بدون پاسخ سوال بپرسید

آیا کسی برای شکستن یک رشته به چند قسمت بر اساس جدا کننده های مشخص کتابخانه ای سراغ دارد؟ می دونم می شه کدش رو نوشت ولی برنامه رو شلوغ می کنه. اگه کسی کتابخانه ای سراغ داشته باشه کد بهتر و تمیز تر می شه. راستی تو ++C. ممنون

2 پاسخ

برای این کار می توانید از قطعه کد زیر استفاده کنید. این کد می تواند رشته ورودی را با رسیدن به '#' به چند قسمت تقسیم کرده و درون vector مشخص شده قرار می دهد. (رشته str ورودی تابع است):

vector<string> tokens;
char * seq = strtok (const_cast<char*>(str), "#");
while (seq != NULL){
    tokens.push_back(seq);
    seq = strtok (NULL, "#");
}

می دونید که استفاده از strtok می تونه خطر امنیتی داشته باشه. پیشنهاد من استفاده از strtok_s است.

(12 ژوئیه '12, 16:48) SeriousAnt

یک راه دیگر برای انجام این کار استفاده از کتابخانه Tokenizer در Boost است. جالب این است که شما با استفاده از این کتابخانه می توانید عملیات tokenize قوی تری داشته باشید و حتی تابع tokenizer را هم خودتان می توانید بنویسید. در زیر مثالی که از مستندات boost برداشته شده، آورده می شود تا موضوع واضح تر باشد:

// char_sep_example_1.cpp
#include <iostream>
#include <boost/tokenizer.hpp>
#include <string>

int main()
{
   std::string str = ";;Hello|world||-foo--bar;yow;baz|";
   typedef boost::tokenizer<boost::char_separator<char> > 
   tokenizer;
   boost::char_separator<char> sep("-;|");
   tokenizer tokens(str, sep);
   for (tokenizer::iterator tok_iter = tokens.begin();
            tok_iter != tokens.end(); ++tok_iter)
       std::cout << "<" << *tok_iter << "> ";
   std::cout << "\n";
   return EXIT_SUCCESS;
}
//خروجی به این صورت خواهد بود
//<Hello> <world> <foo> <bar> <yow> <baz>

البته این جواب هم درست است ولی پیچیده تر است. شاید به خاطر اینکه امکانات بیشتری دارد. ممنون.

(30 ژوئن '12, 05:25) raccoon
toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×22
  • ×1
  • ×1
  • پرسیده شده: 29 ژوئن '12, 12:38
  • بازدید: 3,967 بار
  • آخرین بروزرسانی: 12 ژوئیه '12, 16:48

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها