मेरे पास एक ऐसा फ़ंक्शन है जो एक मनमानी-लंबाई स्ट्रिंग से डेटा के 128-बिट ब्लॉक पर चलता है। यदि स्ट्रिंग 128 बिट्स के हिस्सों में समान रूप से विभाजित नहीं है, तो यह तदनुसार गद्देदार होगा।128-बिट भाग में एक स्ट्रिंग पर मैं फिर से कैसे सक्रिय कर सकता हूं?
उद्देश्य फ़ंक्शन में खिलाए गए स्ट्रिंग में डेटा को बदलने का उद्देश्य है।
मैं शुरू में स्ट्रिंग एक ऐसे माध्यम से पाशन के बारे में सोचा:
//This might have stupid errors. Hopefully it stillg gets the point across.
for (int i = 0; i < strn.size(); i += 16)
{
string block = strn.substr(i, i + 15);
strn.replace(i, i + 15, block);
}
मुझे लगता है कि यह काम करेगा, लेकिन मैं सोच रहा हूँ यह करने के लिए एक और अधिक सुरुचिपूर्ण तरीका होना चाहिए। एक विचार जो दिमाग में आया था वह कक्षा में strn
को समाहित करना था और अपना खुद का इटरेटर लागू करना था जो 128-बिट भाग में अपनी सामग्री को पढ़ सकता है। यह आकर्षक है क्योंकि कन्स्ट्रक्टर पैडिंग को संभाल सकता है और वर्तमान में उपयोग किए जाने वाले कुछ कार्यों को निजी बनाया जा सकता है, इस प्रकार संभावित दुरुपयोग से परहेज किया जा सकता है। क्या यह एक उपयोगी दृष्टिकोण की तरह लगता है? यदि हां, तो कोई अपने इटरेटर को लागू करने के बारे में कैसे जाता है? विस्तृत स्पष्टीकरण का स्वागत है, क्योंकि मैं सी ++ के साथ बहुत अनुभवहीन हूं।
क्या कोई अन्य, शायद बेहतर, दृष्टिकोण है?
धन्यवाद!
यह एक साधारण और सुरुचिपूर्ण दृष्टिकोण की तरह लगता है! बस कुछ प्रश्न: 1) क्या '_128 बिट' में अंडरस्कोर का कोई कारण है? 2) टाइपपीफ क्यों? मुझे लगता है कि यह मुझे अन्य चर और स्थिरांक को इसके प्रकार के रूप में डालने की अनुमति देता है ... क्या मेरा अंतर्ज्ञान सही है? 3) यह कैसे है कि '++' ऑपरेटर पहले से ही इस उदाहरण में अधिभारित है? मुझे इसे स्पष्ट रूप से क्यों नहीं करना है? बेहतर सी ++ संरचनाओं की मेरी अज्ञानता के लिए बहुत धन्यवाद और कई माफ़ी! =) – blz
1. यदि मुझे सही ढंग से याद है, तो चर नाम एक अंक से शुरू नहीं हो सकते हैं। 2. हम्म, सी ++ में वास्तव में कोई ज़रूरत नहीं है, सी में यह कोड को छोटा कर सकता है :)। 3. यह पॉइंटर अंकगणित का लाभ है, यह बिंदुओं के संदर्भ में संचालित होता है, अधिक जानकारी के लिए यहां देखें: http://stackoverflow.com/questions/394767/pointer-arithmetic बीटीडब्ल्यू, यह एक शुद्ध सी समाधान है, कोई सी ++ नहीं है – SomeWittyUsername
उपयोग की जाने वाली विशेषताएं ठीक है जो समझ में आता है। हालांकि, मैं अभी भी टाइपपीफ के बारे में थोड़ा अस्पष्ट हूं। क्या 'typedef' कीवर्ड आपको एक नया प्रकार का नाम बनाने की अनुमति नहीं देता है? इस प्रकार, क्या आपके उदाहरण को परिभाषित संरचना के लिए नाम निर्दिष्ट नहीं करना चाहिए? ... 'typedef struct {...}' जैसे कुछ? – blz