प्रौद्योगिकी साझेदारी

C Series-String (4) String इत्यस्य प्रारम्भिकं अनुकरणं कार्यान्वयनम्

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

🌈个人主页:सहपाठी युचेन् 

💫个人格言:“成为自己未来的主人~”   

String इत्यस्य कार्याणि निम्नलिखितरूपेण सन्ति येषां कार्यान्वयनम् अस्मिन् लेखे करिष्यामः ।

  1. #pragma once
  2. #include<iostream>
  3. #include<assert.h>
  4. using namespace std;
  5. namespace bit
  6. {
  7. class string
  8. {
  9. public:
  10. typedef char* iterator;
  11. iterator begin();
  12. iterator end();
  13. string(const char* str = "");
  14. ~string();
  15. const char* c_str() const;
  16. size_t size() const;
  17. char& operator[](size_t pos);
  18. private:
  19. char* _str;
  20. size_t size;
  21. size_t _capacity;
  22. };
  23. }

एतेषु कार्येषु

string(const char* str = "");

एवं लेखनस्य उद्देश्यं मुख्यतया रिक्तं तारं गृहीत्वा पूर्वनिर्धारितं मूल्यं योजयितुं भवति यदि आगच्छन्तं तारं रिक्तं भवति तर्हि स्वयमेव "0" इति प्रतिलिपितः भविष्यति ।

  1. const char* c_str() const;
  2. size_t size() const;

एतयोः कोडपङ्क्तौ const योजयितुं मुख्यं उद्देश्यं भवति यत् एतौ कार्यौ आह्वयितुं शक्यते यत् पारितः आकारस्य स्ट्रिंग् परिवर्तनीयः अस्ति वा इति न कृत्वा ।

उपरिष्टानि कोड्स् वयं header file मध्ये स्थापयामः ।

.cpp सञ्चिकायां वयं एतानि कार्याणि कार्यान्वितुं तस्य उपयोगं कुर्मः ।

#include"String.h"

वयं .cpp सञ्चिकायाः ​​आरम्भे शीर्षकसञ्चिकां परिचययामः केचन छात्राः जिज्ञासुः भवितुम् अर्हन्ति यत् एतत् C++ पुस्तकालये String.h सञ्चिकायाः ​​सह विग्रहं करिष्यति वा, परन्तु परिणामः न अस्ति यतोहि संकलकः वर्तमाननिर्देशिकायां अन्वेषणं करिष्यति, तथा च the current सञ्चिका निर्देशिकायां पूर्वमेव विद्यते ।

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include"String.h"
  3. namespace bit
  4. {
  5. string::iterator string::begin()
  6. {
  7. return _str;
  8. }
  9. string::iterator string::end()
  10. {
  11. return _str + _size;
  12. }
  13. string::string(const char* str)
  14. :_size(strlen(str))
  15. {
  16. _str = new char[_size + 1];
  17. _capacity = _size;
  18. strcpy(_str, str);
  19. }
  20. string::~string()
  21. {
  22. delete[] _str;
  23. _str = nullptr;
  24. _size = _capacity = 0;
  25. }
  26. const char* string::c_str() const
  27. {
  28. return _str;
  29. }
  30. size_t string::size() const
  31. {
  32. return _size;
  33. }
  34. char& string::operator[](size_t pos)
  35. {
  36. assert(pos < _size);
  37. return _str[pos];
  38. }
  39. }

इदं मूलभूतं String कोड् कार्यान्वयनम् अस्ति ।

अस्य String इत्यस्य परीक्षणसञ्चिका निम्नलिखितम् अस्ति

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<iostream>
  3. #include"String.h"
  4. namespace bit
  5. {
  6. void test_string1()
  7. {
  8. bit::string s1("hello world");
  9. cout << s1.c_str() << endl;
  10. for (size_t i = 0; i < s1.size(); i++)
  11. {
  12. s1[i]++;
  13. }
  14. for (size_t i = 0; i < s1.size(); i++)
  15. {
  16. cout << s1[i] << " ";
  17. }
  18. cout << endl;
  19. string::iterator it1 = s1.begin();
  20. while (it1 != s1.end())
  21. {
  22. cout << *it1 << " ";
  23. ++it1;
  24. }
  25. cout << endl;
  26. for (auto e : s1)
  27. {
  28. cout << e << " ";
  29. }
  30. cout << endl;
  31. bit::string s2;
  32. cout << s2.c_str() << endl;
  33. }
  34. }
  35. int main()
  36. {
  37. bit::test_string1();
  38. return 0;
  39. }

वस्तुतः, श्रेणीयाः कृते, तस्य अधः स्तरः पुनरावर्तकः अस्ति, पुनरावर्तकः च मुख्यतया एकः संकुलः अस्ति तलभागे विद्यमानाः भिन्नाः प्रकाराः एकीकृतं अधिरचना निर्मातुं पुनरावर्तकेन ​​सह नामकृताः भवन्ति ।

अतः यावत् मूलभूतः पुनरावर्तकः निर्मितः भवति तावत् range for इत्यस्य उपयोगः कर्तुं शक्यते ।