是否可以将char乘以int?
例如,我正在尝试制作一个图表,每次出现一个数字都会带*。
类似的东西,但这不起作用
char star = "*";
int num = 7;
cout << star * num //to output 7 stars
答案 0 :(得分:22)
我不会把这个操作称为“乘法”,这只是令人困惑。连接是一个更好的词。
在任何情况下,名为std::string
的C ++标准字符串类都有一个非常适合您的构造函数。
string ( size_t n, char c );
内容初始化为由重复字符c
,n
次形成的字符串。
所以你可以这样:
char star = '*';
int num = 7;
std::cout << std::string(num, star) << std::endl;
确保包含相关标题<string>
。
答案 1 :(得分:6)
你正在这样做的方式是将'*'
字符的二进制表示与数字7进行数字乘法运算并输出结果数。
您想要做什么(基于您的c ++代码注释)是这样的:
char star = '*';
int num = 7;
for(int i=0; i<num; i++)
{
cout << star;
}// outputs 7 stars.
答案 2 :(得分:6)
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;
}
答案 3 :(得分:3)
你可以这样做:
std::cout << std::string(7, '*');
答案 4 :(得分:0)
陈述应该是:
char star = "*";
(star * num)将'*'的ASCII值乘以num
中存储的值要输出'*'n次,请按照其他人的想法进行输出。
希望这有帮助。
答案 5 :(得分:0)
//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;
}