Strumienie w GCC nie lubią setw dla obiektów string
Błąd który zgłaszałem tak dawno, że już nie pamiętam - a ciągle się "trzyma". Biblioteka standardowa dodawana do GNU C++ niepoprawnie obsługuje dyrektywę setw przy wpisywaniu do strumienia obiektów typu string.
Dla przykładu, kod
#include <iostream.h> #include <iomanip.h> #include <string> int main() { string text1 = "1111"; string text2 = "2222"; cout << "[" << setw(10) << text1 << setw(10) << text2 << "]" << endl; }
wygeneruje
[11112222 ]
choć powinien
[ 1111 2222]
(setw zostaje zastosowane przy wypisywaniu "]", stąd te spacje po dwójkach).
Obejście jest proste - starczy zamiast
<< text
napisać
<< text.c_str()
- «Jak odróżnić platformę kompilacji
- Ostrożnie z konstruktorem std::string»
- ↑C++ - sztuczki i niebezpieczeństwa