2017-06-30 2 views
3

Ich bin auf der Suche nach einer schnellen und sauberen Möglichkeit, in einem schönen Tabellenformat mit Zellen richtig ausgerichtet zu drucken.C++ - String Formatierung wie py "{}". Format

Gibt es eine bequeme Möglichkeit, in C++ in Strings von Teilstrings mit bestimmten Länge wie Python-Format hier

"{:10}".format("some_string") 
+1

Blick auf die printf Familie in [stdio.h] (http://www.cplusplus.com/reference/cstdio/printf/) – Grifplex

Antwort

1

Sie haben viele Möglichkeiten zu schaffen. Zum Beispiel mit Streams.

source.cpp

std::ostringstream stream; 
    stream << "substring"; 
    std::string new_string = stream.str(); 
+0

string stellte sich heraus, der bequemste Weg, ohne eine zusätzliche lib importieren zu müssen. thx – chrise

6

Versuchen Sie, diese https://github.com/fmtlib/fmt

fmt::printf("Hello, %s!", "world"); // uses printf format string syntax 
std::string s = fmt::format("{0}{1}{0}", "abra", "cad"); 
+1

Nützliche lib, aber könnte eine Overkill-Aufnahme für etwas, das in ein paar Zeilen gemacht werden kann, und hat auch Lizenzbeschränkungen. – Damien

+0

Ja, ich bevorzuge es, einige Funktionen mit ifdef zu deaktivieren. zB: Farben. – mattn

+0

Ich würde nicht eine lib eine "schnelle und saubere Art und Weise" verwenden. – Aldarrion

-2

Sie eine einfache Funktion schnell schreiben kann eine Zeichenfolge mit fester Länge zurückzukehren.

Wir betrachten die str Zeichenfolge wird durch null beendet, buf ist bereits vor dem Aufruf der Funktion definiert.

void format_string(char * str, char * buf, int size) 
{ 
    for (int i=0; i<size; i++) 
     buf[i] = ' '; // initialize the string with spaces 

    int x = 0; 
    while (str[x]) 
    { 
     if (x >= size) break; 
     buf[x] = str[x]; // fill up the string 
    } 

    buf[size-1] = 0; // termination char 
} 

Eingesetzt als

char buf[100]; 
char str[] = "Hello"; 
format_string(str, buf, sizeof(buf)); 
printf(buf);