我希望多次打印存储在变量中的字符串。在 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/