首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复存储在变量x次中的字符串

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

Stack Overflow用户
提问于 2015-01-09 04:59:46
回答 2查看 300关注 0票数 1

我希望打印一个字符串存储在一个变量多次。在python中,我只需使用以下内容就可以做到这一点:

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

其中高度和宽度是由用户提供的输入。最后,还有其他几行代码将打印*s的矩形。

在C++中有什么简单的方法可以做到这一点吗?

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

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-09 06:14:35

std::string有一个构造函数,该构造函数接受一个字符和一个重复参数,您可以直接使用该构造函数生成顶部和底线,如下所示:

代码语言:javascript
复制
std::string l1 = std::string(width, '*') + "\n";

同样,“中间”行可以生成如下所示:

代码语言:javascript
复制
std::string l2 = "*" + std::string(width-2, ' ') + "*\n";

至于将这些片段放在一个正方形上,我可能会使用std::generate_n生成中间行,因此代码如下所示:

代码语言:javascript
复制
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来获取内容。

票数 1
EN

Stack Overflow用户

发布于 2015-01-09 07:02:17

如果需要,可以创建一个简单的助手函数来执行任务:

示例:

代码语言:javascript
复制
string stringMultiplier(string startString, int multiplier){
    string endString = startString;
    for (int i=1; i<multiplier; i++){
        endString = endString + startString;
    }
    return endString;
}

int main()
{
   cout << stringMultiplier("*",4) << endl; 
   return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27854109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档