2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
🌈个人主页:सहपाठी युचेन्
💫个人格言:“成为自己未来的主人~”
String इत्यस्य कार्याणि निम्नलिखितरूपेण सन्ति येषां कार्यान्वयनम् अस्मिन् लेखे करिष्यामः ।
- #pragma once
- #include<iostream>
- #include<assert.h>
- using namespace std;
-
- namespace bit
- {
- class string
- {
- public:
- typedef char* iterator;
- iterator begin();
- iterator end();
-
- string(const char* str = "");
- ~string();
- const char* c_str() const;
- size_t size() const;
- char& operator[](size_t pos);
- private:
- char* _str;
- size_t size;
- size_t _capacity;
- };
- }
एतेषु कार्येषु
string(const char* str = "");
एवं लेखनस्य उद्देश्यं मुख्यतया रिक्तं तारं गृहीत्वा पूर्वनिर्धारितं मूल्यं योजयितुं भवति यदि आगच्छन्तं तारं रिक्तं भवति तर्हि स्वयमेव "0" इति प्रतिलिपितः भविष्यति ।
- const char* c_str() const;
- size_t size() const;
एतयोः कोडपङ्क्तौ const योजयितुं मुख्यं उद्देश्यं भवति यत् एतौ कार्यौ आह्वयितुं शक्यते यत् पारितः आकारस्य स्ट्रिंग् परिवर्तनीयः अस्ति वा इति न कृत्वा ।
उपरिष्टानि कोड्स् वयं header file मध्ये स्थापयामः ।
.cpp सञ्चिकायां वयं एतानि कार्याणि कार्यान्वितुं तस्य उपयोगं कुर्मः ।
#include"String.h"
वयं .cpp सञ्चिकायाः आरम्भे शीर्षकसञ्चिकां परिचययामः केचन छात्राः जिज्ञासुः भवितुम् अर्हन्ति यत् एतत् C++ पुस्तकालये String.h सञ्चिकायाः सह विग्रहं करिष्यति वा, परन्तु परिणामः न अस्ति यतोहि संकलकः वर्तमाननिर्देशिकायां अन्वेषणं करिष्यति, तथा च the current सञ्चिका निर्देशिकायां पूर्वमेव विद्यते ।
- #define _CRT_SECURE_NO_WARNINGS
- #include"String.h"
- namespace bit
- {
- string::iterator string::begin()
- {
- return _str;
- }
- string::iterator string::end()
- {
- return _str + _size;
- }
-
- string::string(const char* str)
- :_size(strlen(str))
- {
- _str = new char[_size + 1];
- _capacity = _size;
- strcpy(_str, str);
- }
- string::~string()
- {
- delete[] _str;
- _str = nullptr;
- _size = _capacity = 0;
- }
- const char* string::c_str() const
- {
- return _str;
- }
- size_t string::size() const
- {
- return _size;
- }
- char& string::operator[](size_t pos)
- {
- assert(pos < _size);
- return _str[pos];
- }
-
- }
इदं मूलभूतं String कोड् कार्यान्वयनम् अस्ति ।
अस्य String इत्यस्य परीक्षणसञ्चिका निम्नलिखितम् अस्ति
- #define _CRT_SECURE_NO_WARNINGS
- #include<iostream>
- #include"String.h"
- namespace bit
- {
- void test_string1()
- {
- bit::string s1("hello world");
- cout << s1.c_str() << endl;
- for (size_t i = 0; i < s1.size(); i++)
- {
- s1[i]++;
- }
- for (size_t i = 0; i < s1.size(); i++)
- {
- cout << s1[i] << " ";
- }
- cout << endl;
- string::iterator it1 = s1.begin();
- while (it1 != s1.end())
- {
- cout << *it1 << " ";
- ++it1;
- }
- cout << endl;
- for (auto e : s1)
- {
- cout << e << " ";
- }
- cout << endl;
- bit::string s2;
- cout << s2.c_str() << endl;
- }
- }
- int main()
- {
- bit::test_string1();
-
- return 0;
- }
वस्तुतः, श्रेणीयाः कृते, तस्य अधः स्तरः पुनरावर्तकः अस्ति, पुनरावर्तकः च मुख्यतया एकः संकुलः अस्ति तलभागे विद्यमानाः भिन्नाः प्रकाराः एकीकृतं अधिरचना निर्मातुं पुनरावर्तकेन सह नामकृताः भवन्ति ।
अतः यावत् मूलभूतः पुनरावर्तकः निर्मितः भवति तावत् range for इत्यस्य उपयोगः कर्तुं शक्यते ।