ich will mein String-Variable, die Informationen in dieser speichern Format daher wie meine String-Variable mv sollte einige Strings in der ersten Zeile und einige Strings in der zweiten Zeile haben und dieses ganze sollte so funktionieren wie ingle String
Was ist ein String (std::string
) in C++?
Es ist ein Behälter für einen dynamisch veränderbaren Array von Zeichen, zum Manipulieren dieses Array mit Methoden ausgestattet.
Eine Reihe von Zeichen ist:
characters: |c0|c1|c2|c3|...|cN|
, dass die Art eines std::string
ist. Du kannst nichts dagegen tun.
Was ist eine Zeile (des Textes)?
Es gibt keine formale Definition einer Zeile in C++ oder einer anderen Programmiersprache .A Zeile ist ein visuelles Konzept, das zum Lesen und Schreiben Text im 2-dimensionalen Raum angeordnet ist. Eine Zeile ist vertikal über oder unter anderen.
Computer ordnen Daten im zweidimensionalen Raum nicht an. Sie ordnen alles in linear, 1-dimensional, Speicher. Keine Daten liegen vertikal über oder unter anderen Daten.
Aber natürlich können Programmiersprachen Linien von Text darstellen und sie alle tun es durch die gleiche Konvention. Herkömmlicherweise ist eine Zeile ein Array von Zeichen, die mit einer neuen Zeilensequenz endet.
Eine neue Zeilenfolge ist selbst ein Array mit einem oder zwei Zeichen, abhängig von auf der Konvention Ihres Betriebssystems. Windows verwendet die 2-stellige Sequenz carriage-return,line-feed
. Unix-artige Betriebssysteme verwenden die 1-stellige Sequenz line-feed
. Sie können das Thema in Wikipedia: Newline studieren. Aber für Portabilität, in C++ - Quellcode die Newline-Sequenz - was auch immer es ist - wird durch die escape sequence \n
dargestellt, die Sie im Quellcode verwenden können, als ob es ein Zeichen wäre.
So ist die Anordnung der Zeichen:
|h|e|l|l|o|\n|
stellt die Textzeile:
hello
in C++. Und die Anordnung der Zeichen:
|h|e|l|l|o|\n|n|e|w|\n|w|o|r|l|d|\n|
stellt die drei Textzeilen:
hello
new
world
Und wenn Sie das Array in einem einzigen std::string
speichern möchten, C++ können Sie es wie folgt tun:
std::string s0{'h','e','l','l','o','\n','n','e','w','\n','w','o','r','l','d','\n'};
oder bequemer wie folgt aus:
std::string s1{"hello\nnew\nworld\n"};
oder sogar - wenn Sie eine Phobie über die Verwendung der \n
Escape-Sequenz haben - wie folgt aus:
std::string s2
{R"(hello
new
world
)"};
Alle diese Möglichkeiten, um die drei Zeilen in einer Zeichenfolge zu speichern schaffen genau die gleiche Zeichen-Array, dass String, nämlich:
|h|e|l|l|o|\n|n|e|w|\n|w|o|r|l|d|\n|
Sie alle schaffen genau die gleiche std::string
.
Und wenn Sie eine dieser Zeichenfolgen drucken, sehen Sie das gleiche, z. dieses Programm:
#include <string>
#include <iostream>
int main() {
std::string s0{'h','e','l','l','o','\n','n','e','w','\n','w','o','r','l','d','\n'};
std::string s1{"hello\nnew\nworld\n"};
std::string s2 // Yes...
{R"(hello
new
world
)"}; // ...it is meant to be formatted like this
std::cout << "--------------" << std::endl;
std::cout << s0;
std::cout << "--------------" << std::endl;
std::cout << s1;
std::cout << "--------------" << std::endl;
std::cout << s2;
std::cout << "--------------" << std::endl;
return 0;
}
Ausgänge:
--------------
hello
new
world
--------------
hello
new
world
--------------
hello
new
world
--------------
Live demo
Wenn ich mich nicht irren Sie die Newline-Zeichen verwenden können '\ n' innerhalb der Zeichenfolge –
ich versuchte zu verketten '\ n' aber es druckt die '\ n' –
Show-Code mit dieser "nicht funktionierenden" Verkettung –