[c++] Eigene Escape-Sequenzen

09/10/2013 19:25 lolxdflyx3#1
Hi,
Ich brauch ein bisschen Hilfe bei der Entwicklung meines c++Kernels:
Wie kann ich mir eigene Escape-Sequenzen wie zb.
Quote:
\c
erstellen. Ich weiß, dass man sowas über eine Headefile machen kann. Allerdings weiß ich nicht, wie ich vogehen soll.

Das Ausgeben von Text habe ich so geregelt:
Code:
Screen& Screen::operator << (const char* s){
  while (*s != '\0')
    put(*s++);
 
  return *this;
}

void Screen::put(char c){
  if(m_pos >= 80){
    m_pos = 0;
    m_off += 80;
  }
 
  // Wenn die Textausgabe den rechten
  //oder den unteren Bildschirmrand erreicht, gibt es
  // einen Umbruch bzw. es wird aufgeräumt.
  if(m_off >= (80*25))
    clear();
 
  // Setzen des Zeichens und der Farbe in den Videospeicher:
  m_videomem[m_off + m_pos] = (uint16_t)c | m_color;
  m_pos++;
}
lolxdfly
09/10/2013 20:24 Tasiro#2
Geht nicht. Einziger ähnlicher Effekt wäre über UDLs erreichbar (noch nicht in VS implementiert).
Vorgehen ist aber gleich: wenn das besondere Zeichen wie z. B. '%' gelesen wird, wird das nächste Zeichen anders interpretiert und das besondere Zeichen nicht zum Zeichnen geschickt.

Du solltest übrigens mit symbolischen Konstanten arbeiten.


Edit: Und wenn du eine eigene Steam-Klasse haben möchtest, solltest du eine von std::basic_streambuf <charT, traits> (oder einfach std::streambuf) abgeleitete Klasse nutzen. Die kannst du dann in einer von std::basic_ostream <charT, traits> (oder einfach std::ostream) abgeleiteten Klasse in deren Konstruktor vom Stream-Konstruktor verwenden lassen. Schon hast du einen eigenen Ausgabe-Stream. (Ich habe nicht im Standard nachgesehen, aber ich glaube, dass die notwendigen Konstruktoren und die Destruktoren von ostream bzw. ios nun nicht mehr das verwendete streambuf-Objekt nicht anfassen dürfen.)