Die Anleitung zu C/C++ string

View more categories:

1- C-Style String

1.1- String

Im  C++ gibt es 2 Typen vom String, ein C-style string und ein ( C++-Style string).
C-Style string ist wirklich ein Zeichenarray, aber es gibt einige verschiedenen Funktionen, die für String benutzt werden, zum Beispiel in String einfügen, nach der Länge des String suchen und die Funktionen prüft die Angemessenheit von String mit einer ordentlichen Ausdruck (regular expression) 
Die Definition eines String ist eine Dinge, die mehr als einen Zeichen verbindend miteinander enthaltet. Zum Beispiel   "this" ist ein String. Allerdings ist ein einzelnes Zeichen gilt als nicht ein String. Obwohl sie wird wie ein String benutzt
String ist ein Zeichenarray. Benutzen Sie die Anführungszeichen um ein Buchstabestring zu markieren   (string literals)
// Declare a C-Style String.
char mystring[] = { 't', 'h', 'i', 's', ' ', 'i', 's' ,' ', 't', 'e', 'x', 't', '\0'};

// This is a string literal.
char mystring[] = "this is text'';
StringLiteralExample.cpp
#include <stdio.h>

int main() {

   // Declare a String literal.
   char s1[] = "What is this";

   // Print out the string
   printf("Your string = %s", s1);

   fflush(stdout);

   return 0;
}
Das Ergebnis der Beispieldurchführung
  • char mystr[] = "what is this";
Das oben S tring hat 12 Zeichen. Um das String im C zu melden, sollen Sie ein Zeichenarray mit 13 Elemente melden . Erinern Sie sich, wenn die letzte Element des Array null (die Code ist  '\0') ist, bedeutet das die Ende des string. Das letzte Zeichen hat keine Bedeutung in Ihrem String, aber es ist notwendig für C, z.B der Anzeiger (pointer) zeigt eine Position des String. Er wird in die Stelle von dem ersten Zeichen stehen und wenn Sie die Inhalt des String nehmen möchten, wird das Programm die nächsten Elemente bis zum Treffen des null Elemente browsen 

Beachten Sie:

Im diesem Fall haben Sie ein Zeichenarray, von dem Null-zeichenelementen liegt nicht am Ende des Arrays oder es viele null Elemente im Array gibt. Allerdings sieht C nur, dass das Array ein String enthaltet, einschließend die ersten Zeichen bis zum ersten null Zeichen im Array. 

Das folgende Beispiel meldet ein Zeichenarray mit 100 Elemente um die von dem Benutzer getypten Text zu speichern. In diesem Fall wird die Zeichen des Inputstring für die erste Elemente des Array und dann das Null Zeichen zugewiesen. Und die nächsten Elemente können nicht zugwiesen werden
StringFromKeyboardExample.cpp
#include <stdio.h>

int main() {

   // Declare an array of characters with 100 elements,
   // used to store user input string from the keyboard.
   char s1[100];

   printf("Enter your string: \n");
   fflush(stdout);

   // scanf function wait user input from the keyboard.
   // (Press enter to end).
   // It will scan to get a string and assigned to the variable s1.
   // (%s: scan a string does not contain spaces)
   scanf("%s", s1);

   printf("Your string = %s", s1);

   fflush(stdout);

   return 0;
}
Das Ergebnis der Beispieldurchführung

1.2- Die Funktion für C-style String

C bietet einige Funktion um mit String zu arbeiten. Sie liegt in der Standardbibliothek <string.h>. Unten listiere ich einige üblichen Funktionen vom C über String (nicht alles) 
Einige Funktion für  String.
Der Name der Funktion Die Bezeichnung
size_t strlen(const char *str) Die Länge des String kalkulieren, aber das Endezeichen nicht kalkulieren (null Zeichen)
char *strcpy(char *dest, const char *src) String 'src' zu 'dest' kopieren.
int strcmp(const char *str1, const char *str2) Der Vergleich zwischen 2 String str1 und Str2. Wenn das Ergebnis eine ganze Zahl > 0 ist, bedeutet das str1 > str2. Und das Ergebnis = 0, d.h 2 String gleich sind, und umgekehrt ist str1 < str2.
char *strcat(char *dest, const char *src) Appends the string pointed to by src to the end of the string pointed to by dest.
char *strchr(const char *str, int c) Searches for the first occurrence of the character c (an unsigned char) in the string pointed to by the argument str.
StringFunctionsExample.cpp
#include <stdio.h>

// Using string library.
#include <string.h>

int main() {

   // Declare a string literal.
   char s1[] = "This is ";

   // Declare a C-Style string
   // (With null character at the end).
   char s2[] = { 't', 'e', 'x', 't', '\0' };

   // Function: size_t strlen(const char *str)
   // strlen funtion return length of the string.
   // site_t: is unsigned integer data type.
   size_t len1 = strlen(s1);
   size_t len2 = strlen(s2);

   printf("Length of s1 = %d \n", len1);
   printf("Length of s2 = %d \n", len2);

   // Declare an array with 100 elements.
   char mystr[100];

   // Function: char *strcpy(char *dest, const char *src)
   // copy s1 to mystr.
   strcpy(mystr, s1);

   // Function: char *strcat(char *dest, const char *src)
   // Using strcat function to concatenate two strings
   strcat(mystr, s2);

   // Print out content of mystr.
   printf("Your string = %s", mystr);

   fflush(stdout);

   return 0;

}
Das Ergebnis der Beispieldurchführung

2- C++ Style String

C++ bietet Ihnen die Klasse von  string, Es hilft Ihnen bei dem einfacher Umgang mit dem String. Die Methode, die die Klasse String bietet, unterstützt noch die   C-Style string.

2.1- Die Bibliothek String melden

Um string zu benutzen, sollen Sie   Preprocessor Directives  #include <string> melden und die Benutzung der namespace std melden
// Declare Preprocessor Directives

#include <string>

// Declare to use the namespace std.

using namespace std;
Die Meldung vom String
// Declare a string object.

string mystring = "Hello World";

// If you do not declare using namespace std.
// You must use the full name:

std::string mystring = "Hello World";

2.2- Die Methode des String

Unten ist die Liste der Methode vom String.

2.2.1- length()

length() ist eine üblichste Methode vom String, es gibt die Stringslänge (die Zeichen des Strings) rück
LengthDemo.cpp
#include <iostream>
using namespace std;

int main() {
    string str = "This is text";
    int len = str.length();

    cout << "String Length is : " << len << endl;
    return 0;
}
Das Ergebnis der Beispielsdurchführung

2.2.2- append

AppendDemo.cpp
#include <iostream>
using namespace std;

int main() {

      string s1 = "One";
      string s2 = "Two";
      string s3 = "Three";

      cout << "s1 = " + s1 << endl;
      cout << "s2 = " + s2 << endl;
      cout << "s3 = " + s3 << endl;
      cout << " ------------ " << endl;

      // Append s2 into s1.
      string s = s1.append(s2);


      cout << "s1 = " + s1 << endl; // ==> OneTwo
      cout << "s = " + s << endl;   // ==> OneTwo

      cout << " ------------ " << endl;

      // Append s2,s3 into s1.
      s = s1.append(s2).append(s3); // ==> OneTwoTwoThree

      cout << "s1.append(s2).append(s3) = " + s << endl;

}
Das Ergebnis der Beispieldurchführung

2.2.3- find

find ist eine Methode zur Suche nach der Erscheinungsposition eines Sub-String in dem jetzigen String. Die Methode gibt die Konstante   string::npos rück wenn nicht gefunden 
FindDemo.cpp
#include <iostream>
using namespace std;

int main() {

    string str = "This is text";
    // Find index within this string of the first occurrence 'i'.
    // ==> 2
    string::size_type idx = str.find('i');

    cout << "- find('i') = " << idx << endl;

    // Find index within this string of the first occurrence 'i'
    // starting the search at index 4.
    // ==> 5
    idx = str.find('i', 4);
    cout << "- find('i',4) = " << idx << endl;

    // index within this string of the first occurrence of "te".
    // ==> 8
    idx = str.find("te");
    cout << "- find('te') = " << idx << endl;

}
Das Ergebnis der Beispieldurchführung

2.2.4- substr

SubstrDemo.cpp
#include <iostream>
using namespace std;

int main() {

    string str = "This is text";

    // Returns the substring from index 3 to the end of string.
    string substr = str.substr(3);

    cout << "- str.substr(3)=" << substr << endl;

    // Returns the substring from index 2 to index 7.
    substr = str.substr(2, 7);

    cout << "- str.substr(2, 7) =" << substr << endl;

}
Das Ergebnis der Durchführung des Beispiel

2.2.5- replace

Einige Methode über die Ersatz
ReplaceDemo.cpp
#include <iostream>
using namespace std;

int main() {

   string str = "This is text";

   // Replace the 4-character string starting at position 8
   // by "string".
   string s2 = str.replace(8, 4, "string");

   cout << "- str=" << str << endl; // This is string
   cout << "- s2=" << s2 << endl;   // This is string
   cout << " -------------- " << endl;

   // Reset str.
   str = "This is text";

   // Replace the 4-character string starting at index 8,
   // by a substring of another string, 6 characters starting at index 0.
   // ==> It is string
   string s3 = str.replace(8, 4, "string is important", 0, 6);

   cout << "- str=" << str << endl; // It is string
   cout << "- s3=" + s3 << endl;    // It is string
   cout << " -------------- " << endl;

}
Das Ergebnis der Duchführung des Beispiel
Ein Beispiel über die Kombination zwischen find & replace zur Ersatz alles Sub-string durch ein neues String
ReplaceAllDemo.cpp
#include <iostream>
using namespace std;

// A function to find and replace
string replaceAll(string subject, const string& search, const string& replace) {
   size_t pos = 0;
   // function find return string::npos if not found.
   while ((pos = subject.find(search, pos)) != string::npos) {
       subject.replace(pos, search.length(), replace);
       pos += replace.length();
   }
   return subject;
}

int main() {

   string str = "This is text";

   cout << "- str: " << str << endl;
   cout << " --------------------- " << endl;

   // Find "is" and replace by "???".
   string result = replaceAll(str,"is", "???");


   cout << "- result: " << result << endl;
   cout << "- str: " << str << endl;
}
das Beispiel durchführen

2.2.6- insert

InsertDemo.cpp
#include <iostream>
using namespace std;

int main() {

    string str = "This text";

    string s2 = str.insert(5, "is ");

    cout << "- str=" << str << endl; // This is text
    cout << "- s2=" << s2 << endl;   // This is text
    cout << " -------------- " << endl;

}
Das Beispiel durchführen

2.2.7- upper/lower

Obwohl die Klasse string Ihnen keine Methode zur Umwandlung eines String zu einem String von der großen Buchstabe or von der kleinen Buchstabe bietet. Aber Sie können das durch die anderen Bibliothek im C++ machen.
Benutzen Sie die Funktion transform von dem namespace std:
UpperLowerDemo1.cpp
#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int main() {

    string str = "This is text";

    cout << "- str= " << str << endl;

    cout << " ----------------"  << endl;

    // Convert to uppercase
    std::transform(str.begin(), str.end(),str.begin(), ::toupper);


    cout << "- str= " << str << endl;

    // Reset str
    str =  "This is text";

    cout << " -------------- " << endl;

    // Convert to lowercase.
    std::transform(str.begin(), str.end(),str.begin(), ::tolower);

    cout << "- str= " << str << endl;
}
Das Beispiel durchführen

View more categories: