আমি এটি সহজ করে তোলে আমি আমার অবজেক্টিভ সি প্রকল্পে একটি নতুন সি ++ ফাইল যুক্ত করেছি, এটি নাম করে মিমি রাখি এবং তারপরে ভিতরে একটি স্ট্যান্ডার্ড সি ++ শ্রেণি তৈরি করি। তারপরে, আমি একটি সিএস ++ ফাংশনের জন্য "পাবলিক:" বিভাগে একটি স্ট্যাটিক ক্লাস পদ্ধতি তৈরি করি যা একটি এনএসএসআর্টিং নেয় এবং একটি এনএসএসআর্টিং (বা এনএসআরাই, যদি আপনি এটি চান তবে) প্রদান করে। আমি তারপরে এনএসএসটিংকে সি ++ স্টেডি :: স্ট্রিংয়ে রূপান্তর করি:
// If anyone knows a more efficient way, let me know in the comments.
// The "if" condition below is because ObjC crashes if converting to
// std::string if the string is nil or empty.
// assume #include <string>
std::string s = "";
if (([sInput != nil]) && (!([sInput isEqualTo:@""]))) {
std::string sTemp([sInput UTF8String]);
s = sTemp;
}
সেখান থেকে, আমি regex_replace এর মতো ব্যবহার করতে পারি:
// assume #include <regex>
std::string sResult = std::regex_replace(sSource,sRegExp,sReplaceWith);
তারপরে, আমি সেই স্ট্যান্ড :: স্ট্রিংটিকে আবার কোনও এনএসএস স্ট্রিংয়ে রূপান্তর করতে পারি:
NSString *sResponse2 = @(sResult.c_str());
আপনি যদি কেবল এই ক্রিয়াকলাপের জন্য এই সি ++ ব্যবহার করেন তবে আপনি এই ফাইলটিকে অতিরিক্ত mm মিমি (শ্রেণির নাম অতিরিক্ত) কল করতে এবং এই স্থিতিক শ্রেণির পদ্ধতিটি এতে স্থাপন করতে উপযুক্ত বলে মনে করতে পারেন এবং পরিস্থিতি এলে অন্যান্য স্থিতিক শ্রেণীর পদ্ধতি যুক্ত করুন যেখানে এটি কেবলমাত্র C ++ এ করা তা বোধগম্য কারণ কারণ এটি কিছু ক্ষেত্রে কম ঝামেলা। (এমন কেস রয়েছে যেখানে ওবিজেসি কোডের কম লাইনের সাথে কিছু করে, এবং কিছু ক্ষেত্রে সি ++ কোডের কম লাইনের সাহায্যে এটি করে))
পিএস এর সাথে আরও একটি উপায় হ'ল একটি এমএম ফাইল ব্যবহার করা তবে স্ট্যান্ড :: স্ট্রিং এবং স্টাড :: রিজেক্স_রেপ্লেস () (বা রেজিেক্স_ম্যাচ ()) এর চারপাশে একটি উদ্দেশ্য সি মোড়ক তৈরি করা।