[C++] input da tastiera su unsigned char?

di il
5 risposte

[C++] input da tastiera su unsigned char?

Vorrei sapere come fare un input da tastiera su:

uchar szPlaintext[128];								//dato da criptare 
cout << "\nInserisci testo : ";
getline(cin, szPlaintext);

Ho provato con una getline(cin, szPlaintext); ma da un sacco di errori. Compilo con VS2015.
  • 1>d:\download\scuola\c++\virtualaes\virtualaes\encrypt.cpp(32): error C2672: 'getline': no matching overloaded function found
    1>d:\download\scuola\c++\virtualaes\virtualaes\encrypt.cpp(32): error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)': could not deduce template argument for 'std::basic_string<_Elem,_Traits,_Alloc> &' from 'uchar [128]'
    1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\string(157): note: see declaration of 'std::getline'
    1>d:\download\scuola\c++\virtualaes\virtualaes\encrypt.cpp(32): error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)': expects 3 arguments - 2 provided
    1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\string(146): note: see declaration of 'std::getline'
    1>d:\download\scuola\c++\virtualaes\virtualaes\encrypt.cpp(32): error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &&,std::basic_string<_Elem,_Traits,_Alloc> &)': could not deduce template argument for 'std::basic_string<_Elem,_Traits,_Alloc> &' from 'uchar [128]'
    1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\string(126): note: see declaration of 'std::getline'
    1>d:\download\scuola\c++\virtualaes\virtualaes\encrypt.cpp(32): error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &&,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)': expects 3 arguments - 2 provided
    1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\string(73): note: see declaration of 'std::getline'

5 Risposte

  • Re: [C++] input da tastiera su unsigned char?

    Se usi un unsigned char si suppone che tu voglia utilizzare dei dati "binari" e sfruttare tutti gli 8 bits a disposizione (valori da 0 a 255) e non solo i caratteri stampabili.
    Se è questo che vuoi fare ti consiglio di far inserire uno ad uno i valori di ciascun byte (uchar) come intero e poi caricarli nell'array di uchar.
    Guardando il nome che hai dato alla variabile (PlainText) sembrerebbe che tu invece voglia lavorare con del testo e quindi di consiglio di utilizzare char.
    Tutto dipende da come funziona la tua funzione di crittografia, ovvero da che input richiede (binario o testo).
  • Re: [C++] input da tastiera su unsigned char?

    candaluar ha scritto:


    Se usi un unsigned char si suppone che tu voglia utilizzare dei dati "binari" e sfruttare tutti gli 8 bits a disposizione (valori da 0 a 255) e non solo i caratteri stampabili.
    Se è questo che vuoi fare ti consiglio di far inserire uno ad uno i valori di ciascun byte (uchar) come intero e poi caricarli nell'array di uchar.
    Guardando il nome che hai dato alla variabile (PlainText) sembrerebbe che tu invece voglia lavorare con del testo e quindi di consiglio di utilizzare char.
    Tutto dipende da come funziona la tua funzione di crittografia, ovvero da che input richiede (binario o testo).
    Premetto che sto cercando di implementare una AES (non mia), ad un mio programma; la dichiarazione uchar c'era già solo che si trovava in questo modo.
    
    uchar szPlaintext[128] = "testo che voglio inserire";
    
    io volevo fare in modo di inserire il testo da prompt invece che dal sorgente.

    detto questo se provo a dichiararlo char mi va in conflitto con altre funzioni, si vede che il programma originale è concepito per funzionare solo con uchar. Per questo ho chiesto
  • Re: [C++] input da tastiera su unsigned char?

    Con.getline( (char *) szPlaintext, 128);
  • Re: [C++] input da tastiera su unsigned char?

    oregon ha scritto:


    con.getline( (char *) szPlaintext, 128);
    continua a darmi errori sulla getline, VS mi mette la sottolineatura rossa sotto getline.
    Se ci vado sopra: error: no istance of overloaded function "getline" matches the argument list argument types are (char*, int)
  • Re: [C++] input da tastiera su unsigned char?

    La getline() dovrebbe accettare come parametro un oggetto di tipo string; per trasformare poi la stringa in array di char puoi usare il metodo c_str() che per la tua chiamata potrà essere castato a uchar *
Devi accedere o registrarti per scrivere nel forum
5 risposte