Заполните поток строк одним символом - PullRequest
0 голосов
/ 10 апреля 2020

Как мне создать поток строки с фиксированной длиной, заполненной одним символом?

Желаемый вывод:

[xxxxxxxxxx]

Я пробовал это:

#include <iostream>
#include <iomanip>
using namespace std;

int main () {
  stringstream ss;
  ss << setfill('x') << setw(10);
  cout << "[" << ss.str() << "]\n";

  return 0;
}

output:

[]

Если я добавлю что-либо в поток после того, как я установлю ширину и заполнение, я получу заполненный поток, который я ищу:

  ss << setfill('x') << setw(10) << "B";

output:

[xxxxxxxxxB]

Но я хочу, чтобы поток был заполнен потоком просто x Есть ли способ получить заполненный поток, не добавляя к нему значение?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Вы можете просто использовать соответствующую строку конструктор для заполнения потока, как это

ss << std::string(10, 'x');
0 голосов
/ 10 апреля 2020

setw и setfill используются только для установки ширины и параметров заполнения вашего потока, поэтому обычно

  ss << setfill('x') << setw(10);

не работает ( вы ничего не выводите).

Возможно, вы захотите сделать что-то вроде

  ss << setfill('x') << setw(10) << 'x';

, что даст

[xxxxxxxxxx]

так, как вы хотели.

...