Инициализировать переменную string
, которая будет хранить пробелы, а затем добавить пробелы к ней путем циклирования.
int n = 3;
string indents;
for (int c = 0; c < n; c++)
indents += " ";
Объединяя все в одной строке,
string s = "This is a string.\n" + indents + "This is a string.\n" + indents + "This is a string\n" + indents;
cout << s;
EDIT: Поскольку вы упомянули, что вхождения или позиции \n
неизвестны,
Вы можете использовать string::find, чтобы найти первый oc currence \n
, затем добавьте n
пробелов после него, используя string::insert, затем зациклируйте до тех пор, пока не будут найдены все вхождения \n
и после него будут добавлены пробелы.
int n = 3;
string s = "This is a string.\nThis is a string.\nThis is a string\n";
// first occurrence
size_t pos = s.find("\n");
while (pos != string::npos) {
// insert n spaces after \n
s.insert(pos + 1, n, ' ');
// find the next \n
pos = s.find("\n", pos + 1);
}
cout << s;
Выход
This is a string.
This is a string.
This is a string.
Это своего рода запутанное, но вы должны создать свой собственный тип потока, который оборачивает в основной поток и добавляет отступы в каждой найденной строке. –
Я с удовольствием вижу ответ ... в основном, goas беспорядок с буферами и substiture \ n с \ n + n пробелами ... – marom
@buttifulbuttefly Я надеялся, что было более простое решение, но, в порядке, я буду загляните в нее. – frontin