2017-07-29 1 views
1

Ich dachte, wenn es möglich ist, eine Zeichenfolge in C++, die Daten darin enthält, wie ich möchte nicht eine Zeichenfolge oder ein Array von Zeichenfolgen annehmen ich habe eine Zeichenfolge mv
mv =
„Hallo
neue
Welt“
hallo, neue und weltweit in verschiedenen Linien .Jetzt wenn wir mv dann hallo drucken, neue und Welt auf verschiedenen Linien kommen sollte.wie man eine neue Zeile innerhalb einer Zeichenfolge in C++ setzen

i auch in Bezug auf Wettbewerb Programmierung denken, wenn alle Antworten von Anfragen in einem einzigen String verketten und Ausgang dann die Antwort oder cout alle eine Abfrage nach der anderen, wird eine Zeitdifferenz in beide da sein die Ausgängen

+0

Wenn ich mich nicht irren Sie die Newline-Zeichen verwenden können '\ n' innerhalb der Zeichenfolge –

+0

ich versuchte zu verketten '\ n' aber es druckt die '\ n' –

+1

Show-Code mit dieser "nicht funktionierenden" Verkettung –

Antwort

0

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

0

Sie können der Zeichenfolge einfach das Zeichen \ n hinzufügen, um eine neue Zeile zu erstellen.

cout << "Hello \n New \n World" << endl; 

erhalten Sie folgende Ausgabe:

Hello 
New 
World 
+0

Ich möchte meine ** String-Variable **, um die Informationen in diesem Format daher wie meine String-Variable mv einige Zeichenfolgen in Fi haben erste Zeile und einige Strings in der zweiten Zeile und dieses Ganze sollte wie eine einzige Zeichenfolge funktionieren –

+0

@MrinalVerma scheint Sie verstehen grundlegende C++ - Konzepte, was ist "String Holding String" falsch? –

1

Wenn ich Ihre Frage falsch nicht verstanden. Hier ist Ihre Antwort: Fügen Sie am Ende jeder Zeile ein Escape-Zeichen hinzu.

Zeichenfolge mv = "Hallo \ n \
neue \ n \
Welt \ n";

\ n -> neue Zeile
\ -> Charakter entkommen

Hier ist das Arbeitsbeispiel: Example

string mv = "hello\n\ new\n\ world\n";

Verwandte Themen