{"id":649,"date":"2020-03-07T10:14:09","date_gmt":"2020-03-07T02:14:09","guid":{"rendered":"http:\/\/kylelv.com\/?p=649"},"modified":"2020-03-10T00:00:58","modified_gmt":"2020-03-09T16:00:58","slug":"%e5%85%a8%e9%9d%a2%e7%9a%84mystring-%e8%bf%90%e7%ae%97%e7%ac%a6%e9%87%8d%e8%bd%bd","status":"publish","type":"post","link":"https:\/\/blog.kylelv.com\/?p=649","title":{"rendered":"\u5168\u9762\u7684MyString &#8212; \u8fd0\u7b97\u7b26\u91cd\u8f7d"},"content":{"rendered":"\n<h2 class=\"has-text-align-center wp-block-heading\">A:\u5168\u9762\u7684MyString<\/h2>\n\n\n\n<p class=\"has-text-align-center\">\u603b\u65f6\u95f4\u9650\u5236:\u00a01000ms\u00a0\u5185\u5b58\u9650\u5236:\u00a065536kB<\/p>\n\n\n\n<p class=\"has-text-align-left\">\u63cf\u8ff0<\/p>\n\n\n\n<p>\u7a0b\u5e8f\u586b\u7a7a\uff0c\u8f93\u51fa\u6307\u5b9a\u7ed3\u679c<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;cstdlib&gt;\n#include &lt;iostream&gt;\nusing namespace std;\nint strlen(const char * s) \n{\tint i = 0;\n\tfor(; s[i]; ++i);\n\treturn i;\n}\nvoid strcpy(char * d,const char * s)\n{\n\tint i = 0;\n\tfor( i = 0; s[i]; ++i)\n\t\td[i] = s[i];\n\td[i] = 0;\n\t\t\n}\nint strcmp(const char * s1,const char * s2)\n{\n\tfor(int i = 0; s1[i] &amp;&amp; s2[i] ; ++i) {\n\t\tif( s1[i] &lt; s2[i] )\n\t\t\treturn -1;\n\t\telse if( s1[i] &gt; s2[i])\n\t\t\treturn 1;\n\t}\n\treturn 0;\n}\nvoid strcat(char * d,const char * s)\n{\n\tint len = strlen(d);\n\tstrcpy(d+len,s);\n}\nclass MyString\n{<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ \u5728\u6b64\u5904\u8865\u5145\u4f60\u7684\u4ee3\u7801<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">};\n\n\nint CompareString( const void * e1, const void * e2)\n{\n\tMyString * s1 = (MyString * ) e1;\n\tMyString * s2 = (MyString * ) e2;\n\tif( * s1 &lt; *s2 )\n\treturn -1;\n\telse if( *s1 == *s2)\n\treturn 0;\n\telse if( *s1 &gt; *s2 )\n\treturn 1;\n}\nint main()\n{\n\tMyString s1(\"abcd-\"),s2,s3(\"efgh-\"),s4(s1);\n\tMyString SArray[4] = {\"big\",\"me\",\"about\",\"take\"};\n\tcout &lt;&lt; \"1. \" &lt;&lt; s1 &lt;&lt; s2 &lt;&lt; s3&lt;&lt; s4&lt;&lt; endl;\n\ts4 = s3;\n\ts3 = s1 + s3;\n\tcout &lt;&lt; \"2. \" &lt;&lt; s1 &lt;&lt; endl;\n\tcout &lt;&lt; \"3. \" &lt;&lt; s2 &lt;&lt; endl;\n\tcout &lt;&lt; \"4. \" &lt;&lt; s3 &lt;&lt; endl;\n\tcout &lt;&lt; \"5. \" &lt;&lt; s4 &lt;&lt; endl;\n\tcout &lt;&lt; \"6. \" &lt;&lt; s1[2] &lt;&lt; endl;\n\ts2 = s1;\n\ts1 = \"ijkl-\";\n\ts1[2] = 'A' ;\n\tcout &lt;&lt; \"7. \" &lt;&lt; s2 &lt;&lt; endl;\n\tcout &lt;&lt; \"8. \" &lt;&lt; s1 &lt;&lt; endl;\n\ts1 += \"mnop\";\n\tcout &lt;&lt; \"9. \" &lt;&lt; s1 &lt;&lt; endl;\n\ts4 = \"qrst-\" + s2;\n\tcout &lt;&lt; \"10. \" &lt;&lt; s4 &lt;&lt; endl;\n\ts1 = s2 + s4 + \" uvw \" + \"xyz\";\n\tcout &lt;&lt; \"11. \" &lt;&lt; s1 &lt;&lt; endl;\n\tqsort(SArray,4,sizeof(MyString),CompareString);\n\tfor( int i = 0;i &lt; 4;i ++ )\n\tcout &lt;&lt; SArray[i] &lt;&lt; endl;\n\t\/\/s1\u7684\u4ece\u4e0b\u68070\u5f00\u59cb\u957f\u5ea6\u4e3a4\u7684\u5b50\u4e32\n\tcout &lt;&lt; s1(0,4) &lt;&lt; endl;\n\t\/\/s1\u7684\u4ece\u4e0b\u68075\u5f00\u59cb\u957f\u5ea6\u4e3a10\u7684\u5b50\u4e32\n\tcout &lt;&lt; s1(5,10) &lt;&lt; endl;\n\treturn 0;\n}<\/pre>\n\n\n\n<p>\u8f93\u5165<\/p>\n\n\n\n<p>\u65e0<\/p>\n\n\n\n<p>\u8f93\u51fa<\/p>\n\n\n\n<p>1. abcd-efgh-abcd-<br>2. abcd-<br>3.<br>4. abcd-efgh-<br>5. efgh-<br>6. c<br>7. abcd-<br>8. ijAl-<br>9. ijAl-mnop<br>10. qrst-abcd-<br>11. abcd-qrst-abcd- uvw xyz<br>about<br>big<br>me<br>take<br>abcd<br>qrst-abcd-<\/p>\n\n\n\n<p>\u6837\u4f8b\u8f93\u5165<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u65e0<\/pre>\n\n\n\n<p>\u6837\u4f8b\u8f93\u51fa<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">1. abcd-efgh-abcd-\n2. abcd-\n3. \n4. abcd-efgh-\n5. efgh-\n6. c\n7. abcd-\n8. ijAl-\n9. ijAl-mnop\n10. qrst-abcd-\n11. abcd-qrst-abcd- uvw xyz\nabout\nbig\nme\ntake\nabcd\nqrst-abcd-\n<\/pre>\n\n\n\n<p>\u6765\u6e90Guo Wei<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u672c\u673a\u7f16\u8bd1\u5668\u5927\u6982\u4e0d\u8ba9\u91cd\u5b9a\u4e49\u7cfb\u7edf\u51fd\u6570\uff08\u7ed9\u5b9a\u4ee3\u7801\u5e76\u4e0d\u80fd\u8fc7\u7f16<br>\u4fe1\u4ef0\u63d0\u4ea41A \u5999\u5999<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;cstdlib>\n#include &lt;iostream>\nusing namespace std;\nint strlen(const char * s) \n{\tint i = 0;\n\tfor(; s[i]; ++i);\n\treturn i;\n}\nvoid strcpy(char * d,const char * s)\n{\n\tint i = 0;\n\tfor( i = 0; s[i]; ++i)\n\t\td[i] = s[i];\n\td[i] = 0;\n\t\t\n}\nint strcmp(const char * s1,const char * s2)\n{\n\tfor(int i = 0; s1[i] &amp;&amp; s2[i] ; ++i) {\n\t\tif( s1[i] &lt; s2[i] )\n\t\t\treturn -1;\n\t\telse if( s1[i] > s2[i])\n\t\t\treturn 1;\n\t}\n\treturn 0;\n}\nvoid strcat(char * d,const char * s)\n{\n\tint len = strlen(d);\n\tstrcpy(d+len,s);\n}\nclass MyString\n{\n\tchar *p;\npublic:\n\tMyString(){\n\t\tp=new char[1];\n        p[0]='\\0';\n\t}\n\tMyString(const char *s){\n\t\tp=new char[strlen(s)+1];\n\t\tstrcpy(p,s);\n\t}\n\tMyString(const MyString &amp;s){\n\t\tp=new char[strlen(s.p)+1];\n\t\tstrcpy(p,s.p);\n\t}\n\t~MyString(){if(p!=NULL) delete []p;}\n\tfriend ostream &amp; operator &lt;&lt;(ostream &amp;o,const MyString &amp;s){\n\t\to&lt;&lt;s.p;\n\t\treturn o;\n\t}\n\tchar &amp; operator [](int x){return p[x];}\n\tMyString &amp; operator =(const MyString &amp;s){\n\t\tif(p!=NULL) delete []p;\n\t\tp=new char[strlen(s.p)+1];\n\t\tstrcpy(p,s.p);\n\t\treturn *this;\n\t}\n\tMyString operator +(const MyString &amp;s){\n\t\tchar *tmp=new char[strlen(p)+strlen(s.p)+1];\n\t\tstrcpy(tmp,p);\n\t\tstrcat(tmp,s.p);\n\t\treturn MyString(tmp);\n\t}\n\tMyString operator +(const char *s){\n\t\tchar *tmp=new char[strlen(p)+strlen(s)+1];\n\t\tstrcpy(tmp,p);\n\t\tstrcat(tmp,s);\n\t\treturn MyString(tmp);\n\t}\n\tMyString &amp; operator +=(const char *s){\n\t\tchar *tmp=new char[strlen(p)+strlen(s)+1];\n\t\tstrcpy(tmp,p);\n\t\tstrcat(tmp,s);\n\t\tif(p!=NULL) delete []p;\n\t\tp=tmp;\n\t\treturn *this;\n\t}\n\tfriend MyString operator +(const char *s,const MyString &amp;z){\n\t\treturn MyString(s)+z;\n\t}\n\tchar * operator ()(int a,int len){\n\t\tchar *tmp=new char[len+1];\n\t\tfor(int i=0;i&lt;len;i++) tmp[i]=p[a+i];\n\t\ttmp[len]='\\0';\n\t\treturn tmp;\n\t}\n\tfriend bool operator &lt;(const MyString &amp;a,const MyString &amp;b){\n\t\treturn strcmp(a.p,b.p)==-1;\n\t}\n\tfriend bool operator >(const MyString &amp;a,const MyString &amp;b){\n\t\treturn strcmp(a.p,b.p)==1;\n\t}\n\tfriend bool operator ==(const MyString &amp;a,const MyString &amp;b){\n\t\treturn strcmp(a.p,b.p)==0;\n\t}\n\/\/ \u5728\u6b64\u5904\u8865\u5145\u4f60\u7684\u4ee3\u7801\n};\n\n\nint CompareString( const void * e1, const void * e2)\n{\n\tMyString * s1 = (MyString * ) e1;\n\tMyString * s2 = (MyString * ) e2;\n\tif( * s1 &lt; *s2 )\n\treturn -1;\n\telse if( *s1 == *s2)\n\treturn 0;\n\telse if( *s1 > *s2 )\n\treturn 1;\n}\nint main()\n{\n\tMyString s1(\"abcd-\"),s2,s3(\"efgh-\"),s4(s1);\n\tMyString SArray[4] = {\"big\",\"me\",\"about\",\"take\"};\n\tcout &lt;&lt; \"1. \" &lt;&lt; s1 &lt;&lt; s2 &lt;&lt; s3&lt;&lt; s4&lt;&lt; endl;\n\ts4 = s3;\n\ts3 = s1 + s3;\n\tcout &lt;&lt; \"2. \" &lt;&lt; s1 &lt;&lt; endl;\n\tcout &lt;&lt; \"3. \" &lt;&lt; s2 &lt;&lt; endl;\n\tcout &lt;&lt; \"4. \" &lt;&lt; s3 &lt;&lt; endl;\n\tcout &lt;&lt; \"5. \" &lt;&lt; s4 &lt;&lt; endl;\n\tcout &lt;&lt; \"6. \" &lt;&lt; s1[2] &lt;&lt; endl;\n\ts2 = s1;\n\ts1 = \"ijkl-\";\n\ts1[2] = 'A' ;\n\tcout &lt;&lt; \"7. \" &lt;&lt; s2 &lt;&lt; endl;\n\tcout &lt;&lt; \"8. \" &lt;&lt; s1 &lt;&lt; endl;\n\ts1 += \"mnop\";\n\tcout &lt;&lt; \"9. \" &lt;&lt; s1 &lt;&lt; endl;\n\ts4 = \"qrst-\" + s2;\n\tcout &lt;&lt; \"10. \" &lt;&lt; s4 &lt;&lt; endl;\n\ts1 = s2 + s4 + \" uvw \" + \"xyz\";\n\tcout &lt;&lt; \"11. \" &lt;&lt; s1 &lt;&lt; endl;\n\tqsort(SArray,4,sizeof(MyString),CompareString);\n\tfor( int i = 0;i &lt; 4;i ++ )\n\tcout &lt;&lt; SArray[i] &lt;&lt; endl;\n\t\/\/s1\u7684\u4ece\u4e0b\u68070\u5f00\u59cb\u957f\u5ea6\u4e3a4\u7684\u5b50\u4e32\n\tcout &lt;&lt; s1(0,4) &lt;&lt; endl;\n\t\/\/s1\u7684\u4ece\u4e0b\u68075\u5f00\u59cb\u957f\u5ea6\u4e3a10\u7684\u5b50\u4e32\n\tcout &lt;&lt; s1(5,10) &lt;&lt; endl;\n\treturn 0;\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>A:\u5168\u9762\u7684MyString \u603b\u65f6\u95f4\u9650\u5236:\u00a01000ms\u00a0\u5185\u5b58\u9650\u5236:\u00a065536kB \u63cf\u8ff0 \u7a0b\u5e8f\u586b\u7a7a\uff0c\u8f93\u51fa\u6307\u5b9a\u7ed3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[],"class_list":["post-649","post","type-post","status-publish","format-standard","hentry","category-70"],"_links":{"self":[{"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/posts\/649","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=649"}],"version-history":[{"count":2,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/posts\/649\/revisions"}],"predecessor-version":[{"id":660,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/posts\/649\/revisions\/660"}],"wp:attachment":[{"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=649"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=649"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}