Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - esiste in c++ un codice della libreria sapi perché replichi vocalmente anche tipi di variabili senza w davanti?
Forum - C/C++ - esiste in c++ un codice della libreria sapi perché replichi vocalmente anche tipi di variabili senza w davanti?

Avatar
musical_wrighter (Normal User)
Newbie


Messaggi: 1
Iscritto: 26/09/2018

Segnala al moderatore
Postato alle 19:39
Lunedì, 01/10/2018
salve, ho cominciato a studiare solo da quest'anno il c++. sto provando a creare una spece di calcolatrice parlante per pc Windows utilizzando Visual Studio 2017. ma sono bloccato dal fatto che facendo una ricerca in rete ho trovato solo la sintassi per riprodurre vocalmente solo variabili di tipo wstring. qui di seguito ricopio interamente il codice che riesco a compilare senza problemi e dopo spiego le aggiunte che intendevo fare ma non trovo come.
#include "stdafx.h"
#include <iostream>
#include <string>
#include <sapi.h>
using namespace std;
int main()
{
    string avvio;
    ISpVoice * pVoice = NULL; if (FAILED(::CoInitialize(NULL))) return FALSE; HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
    if (SUCCEEDED(hr))
    {
        cout << "ben venuto! la calcolatrice è ora avviata. prego, digitare esci per chiudere o altro testo per proseguire";  hr = pVoice->Speak(L"ben venuto! la calcolatrice è ora avviata. prego, digitare esci per chiudere o altro testo per proseguire", 0, NULL); cin >> avvio;
        while (avvio != "esci") { double primonumero;
        cout << "primo numero";  hr = pVoice->Speak(L"primo numero", 0, NULL); cin >> primonumero;
string operazione;
cout << "tipo di operazione"; hr = pVoice->Speak(L"tipo di operazione", 0, NULL); cin >> operazione;
    double secondonumero;
    cout << "secondo numero"; hr = pVoice->Speak(L"secondo numero", 0, NULL); cin >> secondonumero;
    double somma = primonumero + secondonumero;
    double differenza = primonumero - secondonumero;
    double prodotto = primonumero * secondonumero;
    double quoziente = primonumero / secondonumero;
    if (operazione == "+") cout << somma;
    else if (operazione == "-") cout << differenza;
    else if (operazione == "*") cout << prodotto;
    else if (operazione == "/") cout << quoziente;
    cin >> avvio;
        }
    }
    pVoice->Release();
    pVoice = NULL;
    ::CoUninitialize();

    return 0;
}
in questo modo, posso digitare nel primo campo editabile chiamato avvio qualunque testo diverso da esci ed eseguire tutti i calcoli che mi occorrono, digitare esci per chiudere automaticamente l'eseguibile, e ogni stampa a schermo è accompagnata da un feedback vocale. tranne chiaramente i risultati delle operazioni. per quelli ho provato ad affiancare i comandi cout con  un pezzo di codice del tipo
hr = pVoice->Speak(somma.c_str(),0,Null);
ma come detto sopra questa sintassi è valida solo se collegata a una variabile di tipo wstring.ho provato ad aggiungere un'altra variabile di tipo wstring con valore uguale a somma ma non è possibile la conversione. e non esistono nemmeno tipi di variabili con w corrispondenti alle variabili numeriche. tipo wint o wdouble. qualcuno ha idea di come risolvere il problema? è possibile fare questa cosa con sapi o dovrei tagliare la testa al toro e cercare proprio un'altra libreria tex to speech? grazie in anticipo

Ultima modifica effettuata da musical_wrighter il 01/10/2018 alle 22:55
PM Quote