|
0 / 0 / 0
Регистрация: 19.03.2022
Сообщений: 57
|
||||||
Манипулятор setw и метод ввода строки getline05.09.2022, 22:24. Показов 2672. Ответов 33
Всем доброго времени суток! Столкнулся со следующей проблемой.
Задача в "двух словах". Необходимо создать структуру, характеризующую работника, одним из полей которой имеется имя типа std::string. Далее создается массив структур в цикле, когда пользователь прекращает ввод, структуры из массива должны выводиться в консоль в виде таблицы. Для структуры я решил перегрузить ввод и вывод. Собственно, ниже код:
1. Как в перегрузке оператора ввода сделать так, чтобы при вводе имени можно было разделять пробелом имя и фамилию? В моем варианте просто при вводе структуры ничего не вводится или только первая часть до пробела, а если ввод в цикле, то происходит зацикливание, пробовал std::getline, но не помогает. 2. При перегрузке оператора вывода не могу выровнять таблицу, по какой-то причине не добавляются отступы перед s_number. Прошу разъяснить, что не правильно, а также как исправить.
0
|
||||||
| 05.09.2022, 22:24 | |
|
Ответы с готовыми решениями:
33
Setw() манипулятор Не работает манипулятор setw(n) манипулятор ввода |
|
0 / 0 / 0
Регистрация: 19.03.2022
Сообщений: 57
|
|||
| 07.09.2022, 10:26 [ТС] | |||
|
0
|
|||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 07.09.2022, 10:30 | |
|
И в догоночку, завести константу для количества символов в строке и воспользоваться совета кота Алексея (в общих чертах).
Ибо я даже не могу протестировать ваш код, в 128 символов ))
0
|
|
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,335
|
||
| 07.09.2022, 10:31 | ||
|
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 07.09.2022, 10:31 | |
|
Shimon, если пока сложно то попробуй printf.
Легче не будет, но там вывод корректируется четче. Чисто как вариант
0
|
|
|
0 / 0 / 0
Регистрация: 19.03.2022
Сообщений: 57
|
|||
| 07.09.2022, 10:35 [ТС] | |||
|
В моем понимании я ввожу границу, дальше выравнивание по левому краю, дальше отступ от предыдущего символа (границы) до следующего (содержимого). Но что-то не работает, значит ошибка в моих рассуждениях, но пока не втыкаю, в чем. Добавлено через 3 минуты
0
|
|||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||
| 07.09.2022, 10:35 | |||||||
А так куча непонятных циферок, и что мне с ними делать ? Если в моей консоли 80 символов в ряду. Да и жесткие отступы также излишние. Делайте резиновую таблицу. Один раз сделали, и копипастите оттуда нужные части. p.s. Я давно уже таким не играюсь ...
0
|
|||||||
|
0 / 0 / 0
Регистрация: 19.03.2022
Сообщений: 57
|
||
| 07.09.2022, 10:37 [ТС] | ||
|
0
|
||
|
2410 / 1942 / 764
Регистрация: 27.07.2012
Сообщений: 5,578
|
||||||||||
| 07.09.2022, 10:37 | ||||||||||
"|" ОКstd::left ОКstd::setw(22) FAIL. Это не отступ, а ширина следующего содержимого. Далее у вас выведется "100500" и 22 - strlen("100500") пробелов.
0
|
||||||||||
|
0 / 0 / 0
Регистрация: 19.03.2022
Сообщений: 57
|
||
| 07.09.2022, 10:38 [ТС] | ||
|
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||||||||||||||
| 07.09.2022, 10:46 | ||||||||||||||||||
|
Ну епическая сила ...
Добавлено через 3 минуты Shimon, и если просто нужен фиксированный отступ :
![]() Добавлено через 3 минуты Ах да, про именование часто использованных отступов.
0
|
||||||||||||||||||
|
0 / 0 / 0
Регистрация: 19.03.2022
Сообщений: 57
|
|||
| 07.09.2022, 10:50 [ТС] | |||
опа, а вот тут-то я и ошибался)))Буду исправлять, потом отпишу, что получится...
0
|
|||
|
0 / 0 / 0
Регистрация: 19.03.2022
Сообщений: 57
|
||||||
| 07.09.2022, 11:07 [ТС] | ||||||
|
Докладываю о промежуточных результатах...
Вот код по заполнению строк:
0
|
||||||
|
2410 / 1942 / 764
Регистрация: 27.07.2012
Сообщений: 5,578
|
||
| 07.09.2022, 12:25 | ||
![]() Строку с чертой можно вывести проще: std::cout << std::string(123, '-');
0
|
||
|
0 / 0 / 0
Регистрация: 19.03.2022
Сообщений: 57
|
|
| 07.09.2022, 17:07 [ТС] | |
|
Вроде бы все получилось, ну, по крайней мере, пока содержимое меньше ширины столбца. Скрин прикрепляю.
Но какое-то топорное решение... [ quote="Алексей1153;16437546"]копим вектор векторов строк (таблица), затем для каждой колонки считаем максимальную ширину. При распечатке таблицы под эту ширину подгонять элементы пробелами или тем же setw[/quote] А не могли бы поподробнее изложить суть? Что у меня должно храниться в векторах-"строках таблицы" и как потом это выводить с учетом заполнения?
0
|
|
| 07.09.2022, 17:07 | |
|
Манипулятор ввода / вывода There are no arguments to 'setw' that depend on a template parameter, so a declaration of 'setw' must be available Написать программу «Манипулятор робота» так, чтобы она рисовала манипулятор из n сегментов Манипулятор ввода, который поочередно то считывает, то пропускает каждые десять символов Неправильный вывод UTF8 строки вместе с setw Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|