[VC++] mehrzeiliger String

the incredible Leitman

Erfahrenes Mitglied
Hallo liebe Leute ^^

Ist jetzt vl ne blöde Frage, aber wie kann ich in VC++ in MSVS2005 einen mehrzeiligen String erstellen :confused:

Dabei geht es mir rein um die Optik im Code, eigentlich nicht so wichtig, aber in C# ist es einfach ein @:
C#:
...
{ @Fixed
    {
        BackColor:Control;
        ForeColor:Black;
    }
    Highlight
    {
        BackColor:Highlight;
        ForeColor:HighlightText;
    }
}

aber, was mache ich in C++?

also ganz ohne irgendwas bekomme ich nen Kompilererror "C2001: newline in constant"

In der MSDN steht als Lösung / Vermeidung eines C2001errors die Verwendund von newline characters, also:
C++:
#include <stdio.h>

int main()
{
    printf_s("Hello,\n\
             world");

    printf_s("Hello,\
             \nworld");

    printf_s("Hello,\n"
             "world");

    printf_s("Hello,"
             "\nworld");

    printf_s("Hello,"
             " world");

    printf_s("Hello,\
             world");
}
aber muss ich jetzt vor jedem Zeilenumbruch so ein Zeichen einfügen?
schon sehr mühsam eigentlich -.-

Bezüglich Literals in C++ habe ich in der MSDN einfach nichts hilfreiches gefunden, außer die oben genannten Zeichen zu verwenden.

Gibts es sowas in C++ gar nicht :-O ?
In C# aber schon?

Oder bin ich nur zu dumm um es zu finden ^^
 
Oder du verwendest einfach System.Environment.NewLine. Damit werden auch die entsprechenden Chars eingefügt und zwar abhängig der zugrundeliegenden Plattform.
 
Hi Norbert ^^

hm...sry, ich glaub ich verstehe nicht ganz :confused:

laut MSDN( http://msdn2.microsoft.com/de-de/library/system.environment.newline(VS.80).aspx ) kann ich mittels Environment::NewLine zwar Zeilenumbrüche angeben, aber das muss ich ja auch in jeder Zeile machen?
Genau das will ich mir ja ersparen
C#:
   @Text
   immer noch Text
   immer noch Text
   ...
in C++:
C++:
  "Text
    kein Text mehr"  // C2001
und ein '@' oder dergleichen exitstiert nicht, bzw. ich kenne keines :(
Was kann ich also machen, ohne am Ende jeder Zeile ein Newline char zu machen?

Es geht mir dabei rein um die optische Formatierung!
Ein Freund hat mir ein Control gebastelt, das mit einer Funktion ne Menge an Properties setzten kann.
Diese Funktion übernimmt einen rießigen String, in dem halt dann eben die verschiedenen Eigenschaften stehen.

Jetzt wollte ich aber aus Platzgründen nicht schreiben
func("textfarbe rot, Hintergrundfarbe blau, Größe 25, Breite 150, Name Control 1, Text bitte auswählen..."); ....usw

sondern das eben übersichtlicher gestalten:
func(
"textfarbe rot,
Hintergrundfarbe blau,
...
usw...

leider wird da nur die erste Zeile als String deklariert und der Rest nicht

Nun müsste ich auf jedem Zeilen ende eben einen Umbruch einfügen oder eben ein Zeichen, dass die nächste Zeile auch als String deklariert...

Habe erfahren, dass das in C# (wieder einmal) um einiges leichter ist, da es dort ein "@" gibt, das String Literals definiert

Wie kann ich sowas in C++ machen?

Weiß das wirklich keiner?
Oder weiß denn niemand ob es das überhaupt gibt

bitte Hilfe
mfG
Leitman
 
Zuletzt bearbeitet:
Ein Freund hat mir ein Control gebastelt, das mit einer Funktion ne Menge an Properties setzten kann.
Diese Funktion übernimmt einen rießigen String, in dem halt dann eben die verschiedenen Eigenschaften stehen.
Sei jetzt mal dahin gestellt, ob es so was wie das @ auch in cpp gibt. Ich finde, dass die Art und Weise, mehrere Propertys so auf einmal zu verändern, etwas aufwendig bzw. für mich nicht nachvollziehbar ist. :confused:
Wer macht denn nur so was? Wo ist ist hier der Vorteil erst alle Werte der Propertys samt deren Namen in einen String zu um schreiben, diesen dann der Funktion zu übergeben und anschließend wieder aufzusplitten und alle Werte herraus zu fischen. Hilfe! :eek:
 
Ich finde, dass die Art und Weise, mehrere Propertys so auf einmal zu verändern, etwas aufwendig bzw. für mich nicht nachvollziehbar ist. :confused:
Eh, das ist schon klar :D

Ich soll es ja auch nur umbaun und machs mittels Properties und Methoden, wie es sich gehört ^^
Ist mir nur aufgefallen, denn ich habe den SourceCode in C# bekommen,
und wollte so vorgehen, dass ich ihn einmal komplett in C++ umschreibe und danach mit der korrekten Implementierung beginne...
So kann ich in Eigenheiten von C# und C++ näher betrachten und etwas mein Wissen erweiten (btw, es gibt ja da viiiieeel mehr Unterschiede, als ich dachte :-O )
und dabei ist mir eben aufgefallen, dass so ein @ verwendet wird... ^^

Das hat mich halt intressiert, weil ich bis dato so eine Verwendung noch nie gesehen habe,
verwenden würde ich so ein Konstrukt freilich nicht... ist ja viel zu aufwendig :p
Wenn ich nur eine Eigenschaft ändern möchte und jedesmal nen 35 Zeilen String dafür deklarieren muss!... tja, blöd wär ich ^^


Mittlerweile bin ich mit dem Nachbau auch schon fertig, hat mich halt nur interressiert ^^

Danke trotzdem
Leitman
 

Neue Beiträge

Zurück