python - 重复存储在变量中的字符串 x 次

标签 python c++ string printing

我希望多次打印存储在变量中的字符串。在 python 中,我可以通过使用类似这样的东西来简单地做到这一点:

l1= "*"* 宽度 l2= "*"+ (""* (width-2)) + "*\n" l3= l2 * ((height-4)/2)

高度和宽度由用户输入。最终还有其他几行类似这样的代码将打印一个 *s 的矩形。

在 C++ 中是否有一种简单的方法可以做到这一点?

我尝试使用 l2= std::string((height-4)/2, l1);,但这会导致错误,因为 C++ 需要一个字符串来代替 L2。 (l1 使用 std::string() 函数格式化并正常工作。

非常感谢任何帮助。

最佳答案

std::string 有一个构造函数,它接受一个字符和一个重复参数,您可以直接使用它来生成顶行和底行,例如:

std::string l1 = std::string(width, '*') + "\n";

同样,“中间”线可以像这样生成:

std::string l2 = "*" + std::string(width-2, ' ') + "*\n";

至于将这些部分拼成一个正方形,我可能会使用 std::generate_n 来生成中间线,所以代码看起来像这样:

auto l1 = std::string(width, '*') + "\n";
std::cout <<  l1;
std::generate_n(std::ostream_iterator<std::string>(std::cout), 
    height-2,
    [=] {return "*" + std::string(width - 2, ' ') + "*\n"; });
std::cout << l1;

如果你真的需要字符串形式的结果而不是写入cout,你可以用ostringstream代替cout,并写入其中,然后使用其 str() 成员将内容作为 std::string 获取。

关于python - 重复存储在变量中的字符串 x 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27854109/

相关文章:

c++ - 求能被1到N之间所有数整除的最小数,余数=0

android - 有没有比 Html.fromHtml() 更快的方法将 html 字符解码为字符串?

string - Kickstart 2017(apac) 模式重叠

java - 将 JSONObject 格式化为 JSONArray

python - 如何以多种语言显示日期/时间?

python - 在命令输出中找到 b''?

c++ - 内存障碍,不确定我是否可以轻松使用?

c++ - 为什么 C++ io 流的循环在第一次迭代后中断?

Python用线性插值正则化不规则时间序列

python - Windows错误对话框- 'Errors occurred'-这是哪里来的?