能否将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, '*');
//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;
}
应该是这样的语句:
char star = "*";
(star * num) 将会把 '*' 的 ASCII 值与 num 中存储的值相乘
若要输出 '*' n 次,请遵循其他人提供的想法。
希望这能有所帮助。