Erzeugen von String Literale



  • Hi,

    ich habe eine Funktion von SQL vorgegeben die als Parameter nur ein:

    SQLWCHAR* <===(typedef wchar_t SQLWCHAR)

    akzeptiert.

    //ERROR (pstrCmd ist vom typ const char*)
    wchar_t* test = (wchar_t*)pstrCmd; // L"Use Sakila;"
    _retcode = SQLExecDirect(m_mapDestination[ucDestination], (SQLWCHAR*)test, SQL_NTS);
    
    //SUCCESS
    wchar_t* test = (wchar_t*)L"Use Sakila;";
    _retcode = SQLExecDirect(m_mapDestination[ucDestination], (SQLWCHAR*)test, SQL_NTS);
    
    //SUCCESS
    _retcode = SQLExecDirect(m_mapDestination[ucDestination], (SQLWCHAR*)L"Use Sakila;", SQL_NTS);
    

    Ich möchte aber gerne Variante 1 zum laufen kriegen damit man über die Konsole Sql-Statements ausführen kann.

    Es scheint ein Problem damit zu geben, dass das L beim casten nicht erzeugt wird.

    Hat jemand eine Idee?

    cuanu



  • Hallo.

    Wie wäre es mit einer Konvertierung von char* nach wchar_t* ?
    Es findet keine Konvertierung statt, in dem Du es hart auf den Typ wchar_t änderst!

    const wchar_t *GetWC(const char *c)
    {
        const size_t cSize = strlen(c)+1;
        wchar_t* wc = new wchar_t[cSize];
        mbstowcs (wc, c, cSize);
    
        return wc;
    }
    

    Quelle: http://stackoverflow.com/questions/8032080/how-to-convert-char-to-wchar-t

    Viele Grüße,



  • cuanuriaq schrieb:

    Ich möchte aber gerne Variante 1 zum laufen kriegen damit man über die Konsole Sql-Statements ausführen kann.

    Dann benutze wcin und wstring. Mit C-Style gecaste kommst du nicht weiter.


Log in to reply