problem mit leerzeichen



  • hi,

    ich bins mal wieder.
    alles klappt so wie ich wollte, dachte ich.

    ich hab mir eine klasse zum anlegen von pfaden/dateien und
    zum schreiben in dateien gemacht.

    klappt alles gut bis ich leerzeichen nutzte,
    er macht alles bis zum leerzeichen, dann schliesst das programm.

    muss ich die eingabe überwachen und für leerzeichen ne ausnahmebehandlung
    machen?

    hoffe ich nerve euch nich langsam:)

    danke



  • adonis schrieb:

    ich bins mal wieder.

    Hab' zwar kein Schimmer wer du bist, antworte trotzdem 😃

    Bekommt dein Programm einen Pfad übergeben, der Leerzeichen enthält?

    Dann ist das Problem die Shell, nicht C++. Setze um den gesamten
    Pfad Anführungszeichen (Doppelte oder einfache, je nach Shell/BS).

    Liest du die Pfade von der Konsole?

    Dann poste mal wie. (fgets, ...)



  • jop ist eine kleine consolen anwedung, bin noch recht neu in der
    praxis:)

    hier mal der code, habe bestimmt viel sinnlos zeugs drin,
    ich lerne noch

    meine klasse

    #ifndef _DBCLASS_H
    #define _DBCLASS_H
    #include <cstring>
    class DbClass
    {
    private:
    	std::string m_szPathname;
    	std::string m_szFileName;
    	std::string m_szFilePosition;
    	std::string m_szDaten;
    public:
    	DbCLass();
    	std::string CreatePath(std::string path);
    	std::string getPathname();
    	std::string FileCreate(std::string filename);
    	std::string getFilename();
    	std::string getFilePosition();
    	writeToFile(std::string Daten);
    };
    #endif
    

    meine methoden

    #include <iostream>
    #include <sstream>
    #include <fstream>
    #include <cstring>
    #include <stdio.h>
    #include <windows.h>
    #include "dbclass.h"
    
    using namespace std;
    
    string DbClass::CreatePath(std::string path)
    {	
    	m_szPathname="C:\\";
    	m_szPathname+=path;
    	CreateDirectory(m_szPathname.c_str(),NULL);
    	return m_szPathname;
    }
    
    string DbClass::getPathname()
    {
    	cout<<m_szPathname<<endl;
    	return m_szPathname;
    }
    
    string DbClass::FileCreate(std::string filename)
    {	
    	fstream myFile;
    	string slash="\\";
    	m_szFileName=filename;
    	m_szFilePosition=m_szPathname+slash+m_szFileName;
    	myFile.open(m_szFilePosition.c_str(), ios::out);
    	myFile.close();
    	return m_szFileName;
    }
    
    string DbClass::getFilename()
    {
    	return m_szFileName;
    }
    
    string DbClass::getFilePosition()
    {
    	string slash="\\";
    	m_szFilePosition=m_szPathname+slash+m_szFileName;
    	return m_szFilePosition;
    }
    
    DbClass::writeToFile(string Daten)
    {
    	fstream myFile;
    	myFile.open(m_szFilePosition.c_str(), ios::out);
    	myFile<<Daten;
    	myFile.close();
    }
    

    meine main

    #include <iostream>
    #include <cstring>
    
    #include "dbclass.h"
    
    using namespace std;
    
    void main()
    {	
    	char x;
    	std::string path;
    	std::string filename;
    	string Daten;
    	DbClass test1;
    	cin>>path;
    	cin>>filename;
    	cout<<"Daten eingeben"<<endl;
    	cin>>Daten;
    	test1.CreatePath(path);
    	test1.FileCreate(filename);
    	test1.writeToFile(Daten);
    	cin>>x;
    	return;
    }
    


  • benutze in deiner main statt cin mal getline http://www.cppreference.com/cppstring/getline.html
    dann sollte er die Leerzeichen mit in den string nehmen



  • gut, danke ich werd das mal probieren

    funktioniert sehr gut, danke , der link is auch sehr nett 🙂


Log in to reply