按指定字符数缩进多行输出
Indenting multiline output by specified number of characters
我希望能够输出多行并让它们全部缩进指定数量的字符。所以,如果我们有
int n = 3;
这将是要缩进的字符数,然后我们得到了字符串,
string s = "This is a string.\nThis is a string.\nThis is a string\n";
然后我要输出字符串,
cout << s;
我怎样才能让输出的每一行都缩进 n
?
一个粗略的解决方法是在要打印的字符串中找到 \n
的所有实例,并在每次出现 "\n"
后添加一个包含指定长度的空白 space 字符的字符串.
如果ss
是要打印的字符串,而empty
是一个包含空白space字符的字符串,则将"\n"
中的所有实例替换为[=12] =] 来自 "\n" + empty
请参阅 How to find and replace string? 以获取执行此操作的代码。
根据您的应用程序,您可以将其转换为函数,并尝试重载 cout
以在打印任何字符串时调用它(不确定它是否有效)。
初始化将存储空格的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;
编辑:
由于您提到 \n
的出现次数或位置未知,
您可以使用 string::find to find the first occurrence of \n
, then add n
spaces after it using 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.
我希望能够输出多行并让它们全部缩进指定数量的字符。所以,如果我们有
int n = 3;
这将是要缩进的字符数,然后我们得到了字符串,
string s = "This is a string.\nThis is a string.\nThis is a string\n";
然后我要输出字符串,
cout << s;
我怎样才能让输出的每一行都缩进 n
?
一个粗略的解决方法是在要打印的字符串中找到 \n
的所有实例,并在每次出现 "\n"
后添加一个包含指定长度的空白 space 字符的字符串.
如果ss
是要打印的字符串,而empty
是一个包含空白space字符的字符串,则将"\n"
中的所有实例替换为[=12] =] 来自 "\n" + empty
请参阅 How to find and replace string? 以获取执行此操作的代码。
根据您的应用程序,您可以将其转换为函数,并尝试重载 cout
以在打印任何字符串时调用它(不确定它是否有效)。
初始化将存储空格的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;
编辑:
由于您提到 \n
的出现次数或位置未知,
您可以使用 string::find to find the first occurrence of \n
, then add n
spaces after it using 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.