Witam,
prośba o pomoc odnośnie zadania
Ważnie nie można używać pętli w tym zadaniu.
Napisz funkcję box_print(), która przyjmie vector stringów i wyświetli je w obramówce wykonanej ze znaków asterisk (*). Przykładowo, jeżeli kontener ten wygląda następująco:
vector<string> strings = {"hello"s,"world"s,"in"s,"a"s,"frame"s};
To wynik wywołania wymaganej funkcji wypisałby następujący napis:
To co mam niżej w komentarzy gdzie mam problem.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <iomanip>
using namespace std;
template <typename T, int W>
struct FixedWidthVal
{
FixedWidthVal(T v_) : v(v_) {}
T v;
};
template <typename T, int W>
std::ostream& operator<< (std::ostream& ostr, const FixedWidthVal<T, W>& fwv)
{
return ostr << std::setw(W) << fwv.v;
}
void func(vector<string> vec)
{
cout.fill('*');
cout<< setw(7) <<"" << endl; //-- setw(7) - Tutaj nie wiem za bardzo jak zrobić żeby było na zmiennych wartościach a nie stałych
cout.fill(' ');
copy(vec.begin(), vec.end(), ostream_iterator<FixedWidthVal<string, 5>>(cout <<"*" << left, "*\n*"));
cout.fill('*');
cout << setw(6) << "" << endl;
}
int main() {
vector<string> vec = { "Hello","World" ,"in","a","frame" };
func(vec);
return 0;
}