是否可以将char乘以int?
例如,我正在尝试制作一个图表,每次出现一个数字时都带有 *。
类似的东西,但这不起作用
char star = "*";
int num = 7;
cout << star * num //to output 7 stars
是否可以将char乘以int?
例如,我正在尝试制作一个图表,每次出现一个数字时都带有 *。
类似的东西,但这不起作用
char star = "*";
int num = 7;
cout << star * num //to output 7 stars
我不会将该操作称为“乘法”,这只是令人困惑。串联是一个更好的词。
在任何情况下,名为 的 C++ 标准字符串类std::string
都有一个非常适合您的构造函数。
string ( size_t n, char c );
内容被初始化为由字符c
、n
次重复形成的字符串。
所以你可以这样:
char star = '*';
int num = 7;
std::cout << std::string(num, star) << std::endl;
确保包含相关的标题,<string>
.
你这样做的方式是将'*'
字符的二进制表示与数字 7 相乘并输出结果数字。
您想要做的(基于您的 c++ 代码注释)是这样的:
char star = '*';
int num = 7;
for(int i=0; i<num; i++)
{
cout << star;
}// outputs 7 stars.
GMan 对这个问题的过度设计启发了我做一些模板元编程来进一步过度设计它。
#include <iostream>
template<int c, char ch>
class repeater {
enum { Count = c, Char = ch };
friend std::ostream &operator << (std::ostream &os, const repeater &r) {
return os << (char)repeater::Char << repeater<repeater::Count-1,repeater::Char>();
}
};
template<char ch>
class repeater<0, ch> {
enum { Char = ch };
friend std::ostream &operator << (std::ostream &os, const repeater &r) {
return os;
}
};
main() {
std::cout << "test" << std::endl;
std::cout << "8 r = " << repeater<8,'r'>() << std::endl;
}
你可以这样做:
std::cout << std::string(7, '*');
声明应该是:
char star = "*";
(star * num) 将 '*' 的 ASCII 值与存储在 num 中的值相乘
要输出'*' n 次,按照别人灌输的想法。
希望这可以帮助。
//include iostream and string libraries
using namespace std;
int main()
{
for (int Count = 1; Count <= 10; Count++)
{
cout << string(Count, '+') << endl;
}
for (int Count = 10; Count >= 0; Count--)
{
cout << string(Count, '+') << endl;
}
return 0;
}