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