Умножить char на целое число (c ++) - PullRequest
7 голосов
/ 08 апреля 2010

Можно ли умножить символ на целое?

Например, я пытаюсь построить график с * для каждого случая, когда число встречается.

Так что-то вроде, но это не работает

char star = "*";
int num = 7;

cout << star * num //to output 7 stars

Ответы [ 6 ]

22 голосов
/ 08 апреля 2010

Я бы не назвал эту операцию «умножением», это просто сбивает с толку.Конкатенация - это лучшее слово.

В любом случае, стандартный строковый класс 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>.

6 голосов
/ 08 апреля 2010

Превосходство 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;
}
6 голосов
/ 08 апреля 2010

способ, которым вы это делаете, будет делать числовое умножение двоичного представления символа '*' на число 7 и выводить полученное число.

Что вы хотите сделать (основываясь на вашем комментарии к коду C ++):

char star = '*';
int num = 7;
for(int i=0; i<num; i++)
{
    cout << star;
}// outputs 7 stars. 
3 голосов
/ 08 апреля 2010

Вы можете сделать это:

std::cout << std::string(7, '*');
0 голосов
/ 07 апреля 2015
//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;

}

0 голосов
/ 08 апреля 2010

Заявление должно быть:

char star = "*";

(звезда * число) умножит значение ASCII '*' на значение, сохраненное в num

Чтобы вывести '*' n раз, следуйте идеям других.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...