Нужна помощь в написании цикла for для создания границы вокруг строки - PullRequest
0 голосов
/ 09 сентября 2018

Здравствуйте, мне интересно, как написать цикл for, который будет создавать рамку вокруг строки. У меня есть несколько строк разной длины, и я бы хотел, чтобы цикл печатал строку с рамкой вокруг нее, чтобы она выглядела более сплоченной, и поэтому мне не придется менять ее вручную. Спасибо !!

Мне нужно окружить "фортуну" границей, как показано ниже, но с использованием цикла for.

вот избранные состояния:

Новая возможность ждет вас на развилке дороги,

Ранняя пташка получает червя, но вторая мышь получает сыр,

Вы ловко замаскированы под ответственного взрослого,

Лучшие вещи в жизни не вещи,

Забудьте о травмах; никогда не забывай доброты,

Одалживать деньги у пессимиста, они не ожидают их возврата

cout << " |=========================================================| \n";
cout << " |" <<fortune[rand_index]<<" | \n";
cout << " |=========================================================| \n";

1 Ответ

0 голосов
/ 09 сентября 2018
#include <iostream>
#include <string>
#include <cstddef>

void print_with_border(std::string const &str)
{
    std::cout.put('+');

    for (std::size_t i{}; i < str.length() + 2; ++i)
        std::cout.put('-');

    std::cout << "+\n| " << str << " |\n+";

    for (std::size_t i{}; i < str.length() + 2; ++i)
        std::cout.put('-');

    std::cout << "+\n";
}


int main()
{
    std::string fortunes[]{
        "A new opportunity awaits you at the fork of the road.",
        "The early bird gets the worm, but the second mouse gets the cheese.",
        "You are cleverly disguised as responsible adult.",
        "The best things in life aren't things.",
        "Forget injuries; never forget kindnesses.",
        "Borrow money from a pessimist, They don't expect it back."
    };


    for (auto const &f : fortunes)
        print_with_border(f);
}

Выход:

+-------------------------------------------------------+
| A new opportunity awaits you at the fork of the road. |
+-------------------------------------------------------+
+---------------------------------------------------------------------+
| The early bird gets the worm, but the second mouse gets the cheese. |
+---------------------------------------------------------------------+
+--------------------------------------------------+
| You are cleverly disguised as responsible adult. |
+--------------------------------------------------+
+----------------------------------------+
| The best things in life aren't things. |
+----------------------------------------+
+-------------------------------------------+
| Forget injuries; never forget kindnesses. |
+-------------------------------------------+
+-----------------------------------------------------------+
| Borrow money from a pessimist, They don't expect it back. |
+-----------------------------------------------------------+
...