Ho una classe polinomiale e la sua rappresentazione naturale è i suoi coefficienti. Se è impostato un coefficiente, è 1 per la base binomiale, 1 o 2 per la base trinomiale, ecc. Ad esempio, in base al binomio, X + 1 è rappresentato come 101; e in base trinomiale, 2X +1 è rappresentato come 201.Utilizzare ostream con basi diverse da 8, 10 e 16
La classe fornisce un sovraccarico operator<<
. Internamente, la classe rappresenta i coefficienti utilizzando una matrice integrale. Quindi dovrei essere in grado di eseguire:
ostringstream oss;
for (size_t i=0; i<v.size(); i++)
oss << v[i];
Il problema che sto avendo è che non so come configurare l'ostream per supporti di materia diversa 8, 10 e 16. ios_base
fornisce std::oct
, std::dec
e std::hex
per la basi popolari, ma non vedo cosa usare per le basi meno utilizzate. E pagine come C++ Reference on ios_base non discutono su cosa usare.
Come si usa ostream con basi diverse da 8, 10 e 16?
No, non c'è supporto per altre basi. Devi convertirlo in una stringa ed emetterlo. –
Non sono sicuro se ciò è possibile usando mezzi standard. Guardando http://en.cppreference.com/w/cpp/io/manip/setbase - "I valori di base diversi da 8, 10 o 16 ripristinano il campo base a zero, che corrisponde all'output decimale e all'input dipendente da prefisso. " – jready
A meno che qualcosa di cui non so sia stato aggiunto molto recentemente, non c'è supporto per basi diverse da 8, 10 e 16 in iostream. Dovrai leggere numeri come stringhe e decodificarli a mano. – zwol