Умножить char на целое число (C++)
Можно ли умножить символ на целое?
Например, я пытаюсь построить график с * для каждого числа, которое встречается.
Так что-то вроде, но это не работает
char star = "*";
int num = 7;
cout << star * num //to output 7 stars
6 ответов
Я бы не назвал эту операцию "умножение", это просто сбивает с толку. Конкатенация - лучшее слово.
В любом случае, стандартный строковый класс 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;
}
//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 раз, следуйте идеям, вложенным другими.
Надеюсь это поможет.