Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C++ Strings Beheersen: C-Stijl vs std::string

C++ biedt de volgende twee typen string representaties:

  • De C-stijl karakter string.
  • De string class type geïntroduceerd met Standaard C++.

De C-Stijl Karakter String

De C-stijl karakter string ontstond binnen de C-taal en wordt nog steeds ondersteund binnen C++. Deze string is eigenlijk een eendimensionale array van karakters die getermineerd wordt door een null karakter '\0'. Dus een null-getermineerde string bevat de karakters die de string vormen gevolgd door een null.

De volgende declaratie en initialisatie creëert een string bestaande uit het woord "Hello". Om het null karakter aan het einde van de array te houden, is de grootte van de karakterarray die de string bevat één meer dan het aantal karakters in het woord "Hello."

 char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; 

Als u de regel van array initialisatie volgt, kunt u de bovenstaande statement als volgt schrijven:

 char greeting[] = "Hello"; 

Hier volgt de geheugenpresentatie van de bovenstaande gedefinieerde string in C/C++:

C++ Strings Beheersen: C-Stijl vs std::string

Eigenlijk plaatst u het null karakter niet aan het einde van een string constant. De C++ compiler plaatst automatisch de '\0' aan het einde van de string wanneer het de array initialiseert. Laten we proberen de bovenstaande string te printen:

Live Demo
 #include <iostream>
using namespace std;
int main () {
  char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
  cout << "Greeting message: ";
  cout << greeting << endl;
  return 0;
} 

Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het het volgende resultaat:

 Greeting message: Hello 

C++ ondersteunt een breed scala aan functies die null-getermineerde strings manipuleren:

Nr. Functie & Doel
1

strcpy(s1, s2);

Kopieert string s2 in string s1.

2

strcat(s1, s2);

Voegt string s2 toe aan het einde van string s1.

3

strlen(s1);

Retourneert de lengte van string s1.

4

strcmp(s1, s2);

Retourneert 0 als s1 en s2 hetzelfde zijn; kleiner dan 0 als s1<s2; groter dan 0 als s1>s2.

5

strchr(s1, ch);

Retourneert een pointer naar de eerste occurrence van karakter ch in string s1.

6

strstr(s1, s2);

Retourneert een pointer naar de eerste occurrence van string s2 in string s1.

Het volgende voorbeeld maakt gebruik van enkele van de bovenstaande functies:

Live Demo
 #include <iostream>
#include <cstring>
using namespace std;
int main () {
  char str1[10] = "Hello";
  char str2[10] = "World";
  char str3[10];
  int len ;
  // kopieer str1 in str3
  strcpy( str3, str1);
  cout << "strcpy( str3, str1) : " << str3 << endl;
  // concateneer str1 en str2
  strcat( str1, str2);
  cout << "strcat( str1, str2): " << str1 << endl;
  // totale lengte van str1 na concatenatie
  len = strlen(str1);
  cout << "strlen(str1) : " << len << endl;
  return 0;
} 

Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het een resultaat ongeveer als volgt:

 strcpy( str3, str1) : Hello
 strcat( str1, str2): HelloWorld
 strlen(str1) : 10 

De String Class in C++

De standaard C++ bibliotheek biedt een string class type dat alle bovenstaande operaties ondersteunt, en bovendien veel meer functionaliteit. Laten we het volgende voorbeeld controleren:

Live Demo
 #include <iostream>
#include <string>
using namespace std;
int main () {
  string str1 = "Hello";
  string str2 = "World";
  string str3;
  int len ;
  // kopieer str1 in str3
  str3 = str1;
  cout << "str3 : " << str3 << endl;
  // concateneer str1 en str2
  str3 = str1 + str2;
  cout << "str1 + str2 : " << str3 << endl;
  // totale lengte van str3 na concatenatie
  len = str3.size();
  cout << "str3.size() : " << len << endl;
  return 0;
} 

Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het een resultaat ongeveer als volgt:

 str3 : Hello
 str1 + str2 : HelloWorld
 str3.size() : 10 

C Taal

  1. C# Strings: Fundamentals, Operaties & Geavanceerde Technieken
  2. C++ operators: complete gids met praktische voorbeelden
  3. C++ comments: best practices voor leesbare, onderhoudbare code
  4. C++ Class Templates Beheersen: Een Praktische Gids
  5. C++ Variabelen en Datatypes: Expert‑handleiding voor int, double, char, string, bool
  6. C++ String‑Functies Beheersen: strcpy, strcat, strlen, strcmp – Praktische Voorbeelden
  7. C Strings Makkelijk Gemaakt: Declaratie, Invoer, Uitvoer en Bibliotheekfuncties
  8. C++ Programmeertaal: Overzicht & Belangrijkste Kenmerken
  9. Java Strings beheersen: aanmaken, methodes en best practices
  10. String representaties in Java Enums meesteren
  11. Java Strings Class: String Creatie & Manipulatie Onder de Knie