char moltiplicare per intero (c ++)
-
25-09-2019 - |
Domanda
E 'possibile moltiplicare un char da un int?
Per esempio, sto cercando di fare un grafico, con * 's per ogni volta che si verifica un numero.
Quindi qualcosa di simile, ma questo non funziona
char star = "*";
int num = 7;
cout << star * num //to output 7 stars
Soluzione
Io non lo chiamerei operazione "moltiplicazione", che è solo confusione. La concatenazione è una parola migliore.
In ogni caso, la classe C ++ stringa standard, chiamato std::string
, ha un costruttore che è perfetto per voi.
string ( size_t n, char c );
Il contenuto viene inizializzato come una stringa formata da una ripetizione di c
carattere, tempi n
.
Così si può andare in questo modo:
char star = '*';
int num = 7;
std::cout << std::string(num, star) << std::endl;
Assicurati di includere l'intestazione in questione, <string>
.
Altri suggerimenti
il modo in cui si sta facendo farà una moltiplicazione numerica della rappresentazione binaria del carattere '*'
contro il numero 7 e l'uscita il numero risultante.
Che cosa si vuole fare (in base al codice C ++ commento) è questo:
char star = '*';
int num = 7;
for(int i=0; i<num; i++)
{
cout << star;
}// outputs 7 stars.
over-engineering di Gman di questo problema mi ha spinto a fare un po 'modello di meta-programmazione per ulteriori over-ingegnere di esso.
#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;
}
Si potrebbe fare questo:
std::cout << std::string(7, '*');
La dichiarazione dovrebbe essere:
char star = "*";
(stella * num) moltiplicherà il valore ASCII di '*' con il valore memorizzato in num
Per l'uscita '*' n volte, seguire le idee versato dentro da altri.
Spero che questo aiuti.
//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;
}