因此,我目前正在通过Jeremy Siek的udemy上的加速C ++课程进行学习,而我在该教程中提到了字符串连接,并且在一部分中,他下达了打印类似这样的内容(不使用嵌套循环)的任务:
输出:
*
**
***
****
(-所以我从较早就知道了for循环,而我对C ++编程并不完全陌生,但是我只是从较早的时候开始补充知识,我知道可以使用嵌套的for循环来解决此问题。但这不是我的问题。 ,请继续阅读,因为我必须先介绍一下我的问题)
在他编写这样的源代码程序之前(我已完全理解)
int main()
{
cout << "Please enter your name:";
string name;
cin>>name;
string greeting="Hello, " + name + "!";
string spaces(greeting.size(), ' ');
string stars(greeting.size(), '*');
cout << "**" stars << "**" << endl;
<< "* "<< spaces << " *"<< endl;
<< "* "<< greeting << " *"<< endl;
<< "* "<< spaces << " *" <<endl;
<< "**" stars << "**" << endl;
return 0;
}
现在,关于我的问题:我正在尝试完成他给的任务,然后我想到了这样的东西:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string star="*";
int br=1;
cout<<star<<endl;
while(br<4)
{
br+=1;
string (newstar.size(br, '*') );
cout<<newstar<<endl;
}
return 0;
}
现在,该程序由于string (newstar.size(br, '*') );
而导致错误,我不明白为什么这是错误的以及string newstar(br, '*');
是正确的没有.size和没有()吗?
错误是
prog.cc: In function 'int main()':
prog.cc:14:13: error: 'newstar' was not declared in this scope
string (newstar.size(br, '*') );
^~~~~~~
prog.cc:14:13: note: suggested alternative: 'star'
string (newstar.size(br, '*') );
^~~~~~~
star
因为您未声明newstar
。编译器已经在那里停止了,但是还有更多错误:std::string::size
没有参数,并且不清楚编写string ( some_number);
的期望。
我认为您的意图是:
string newstar(br, '*');
代替:
string (newstar.size(br, '*') );
也可以在该行之后增加br。