Problem mit Argumenten (argv)



  • Hallo,
    ich habe das Problem, dass wenn ich strings als argument in
    mein programm übergeben will, dass jedes zweite char ein '\0' ist!

    das heißt, er nimmt immer nur den ersten char!

    int _tmain(int argc, char* argv[])
    {
    	if (argc != 3)
    	{
    		return 1;
    	}
    	cout << *argv[1];
    	cout << *argv[2];
    ...
    


  • Vermitluch hast Du ein UNICODE-Programm...
    Ändere es nach

    #ifdef _UNICODE
    #define tcout wcout
    #else
    #define tcout cout
    #endif
    
    int _tmain(int argc, TCHAR* argv[])
    {
        if (argc != 3)
        {
            return 1;
        }
        tcout << argv[1];
        tcout << argv[2];
    ...
    


  • danke für die schnelle antwort!

    aber es geht immernoch net.

    hab hier nochma den jetzigen code:

    #ifdef _UNICODE
    #define tcout wcout
    #else
    #define tcout cout
    #endif
    
    int _tmain(int argc, TCHAR* argv[])
    { 
    	if (argc != 3)
    	{
    		return 1;
    	}
    	cout << (char*) argv[1] << endl;
    	cout << argv[2] << endl;
    


  • Ersetze mal "cout" durch "tcout" (so wie ich es geschrieben habe) und lass das casten weg!



  • ja, das geht, aber das mit cout war ja nur ein beispiel,
    ich will das ja normal als string benutzen,
    also wie kann ich das is ein char* konvertieren?



  • entferne das UNICODE-Define in den Projekteinstellungen und du kannst

    int main(int argc, char *argv[])
    

    benutzen, sowie std::cout, denn dann sind die Zeichen (char) nur noch 1 Byte breit (und nicht zwei, wie bei wchar_t, jener Datentyp, zu dem TCHAR expandiert, wenn UNICODE bzw. _UNICODE definiert ist).



  • wo steht das in den projekteinstellungen?



  • AeroX schrieb:

    wo steht das in den projekteinstellungen?

    Keine Ahnung. Ist doch deine IDE. Du solltest sie kennen(lernen), um produktiv mit ihr umgehen zu können. Und wenn du die Einstellung jetzt sogar noch selber suchst, wirst du dich auch viel besser dran erinnren können, wenn du das in einem weiteren Projekt einmal einstellen musst. 😉



  • also, ich suche jetzt seid einer halben stunde,
    finde aber nichts.

    habe vs08



  • Wenn das ganze auch ein wenig Komplexer werden soll, dann nimmst am besten ne Klasse dazu her, die dir die Argumente ordentlich parsed.

    Empfehlung:

    http://www.codeproject.com/KB/recipes/ccmdline.aspx



  • danke für die seite!

    aber es ist nur ein kleines programm 🙂



  • kann mir keiner helfen?


Log in to reply