Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重复存储在变量x中的字符串多次_Python_C++_String_Printing - Fatal编程技术网

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

Python 重复存储在变量x中的字符串多次,python,c++,string,printing,Python,C++,String,Printing,我希望多次打印存储在变量中的字符串。在python中,我只需使用以下内容即可做到这一点: std::string l2 = "*" + std::string(width-2, ' ') + "*\n"; auto l1 = std::string(width, '*') + "\n"; std::cout << l1; std::generate_n(std::ostream_iterator<std::string>(std::cout), height

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

std::string l2 = "*" + std::string(width-2, ' ') + "*\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;
l1=“*”*宽度
l2=“*”+(“”*(宽度-2))+“*\n”
l3=l2*((高度-4)/2)

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

<>在C++中有一个简单的方法吗?< /P> 我尝试使用
l2=std::string((高度-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";
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;
至于将这些片段组合成一个正方形,我可能会使用
std::generate\u n
来生成中间行,因此代码看起来像这样:

std::string l2 = "*" + std::string(width-2, ' ') + "*\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;
autoL1=std::string(宽度“*”)+“\n”;

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

例如:

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;
}
stringstringmultiplier(stringstartstring,int-multiplier){
字符串endString=startString;

对于(int i=1;我要使用你的代码,尽管它是断开的,
l1
的一个示例字符串、一个计数和一个所需的
l2
输出将作为你的问题的补充大声说话。@WhozCraig、
l1
和所有其他变量将与上面的python代码相同。