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
È stato utile?

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;

}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top