Я пытаюсь отформатировать вывод, используя библиотеку NTL (библиотека теории чисел). Одним из объектов является объект GF2X, представляющий собой полином, представленный в виде строки коэффициентов. Краткий пример:
GF2X a = GF2X(5,1);
a++;
cout<<a;
даст [1 0 0 0 0 1]
, что совпадает с x ^ 5 + 1. Мой вопрос касается форматирования этого вывода с помощью setw. Я хочу иметь возможность выводить объекты GF2X различной длины, предваряя их числом и добавляя строку. Я бы хотел, чтобы мой вывод выглядел следующим образом:
1: [x x x x x x x x] string here
15: [x x x] string here
Я бы также согласился на то, чтобы право ] было выровнено, чего, вероятно, и следует ожидать, если я использую setw. Однако, когда я использую код (имена переменных для простоты опущены):
cout << setw(3)<< int <<": "<< setw(35) << GF2X << setw(15) << string << endl;
Я получаю вывод, похожий на этот (некоторые пробелы удалены для компактности)
1: [x x x x x x x x] string here
15: [x x x] string here
Другими словами, функция setw, по-видимому, обрабатывает весь вывод <<GF2X
как один символ и, похоже, фактически не учитывает размер выходной строки. Как вы можете видеть из вывода, который я вам показал, левая сторона вывода GF2X выравнивается, а правая — нет, в то время как обычно setw выравнивает правую сторону вывода.
cout << FormatWidth(35, GF2X);
- person Benjamin Lindley   schedule 29.07.2012std::left
? - person jrok   schedule 29.07.2012