[gelöst] Problem mit std::string

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

[gelöst] Problem mit std::string

Beitrag von Exasperation »

Hallo zusammen!

Ich baue gerade ein Test-Szenario für eine Berkeley DB auf und habe im Moment Probleme mit dem std::string.

Code: Alles auswählen

#include <string.h>

#include "my_db.hpp"

my_db::my_db( std::string &path, std::string db_name ) : db( NULL, 0 ), db_file_name( path, db_name ), open_flags( DB_CREATE )
{
	try
	{
		// Redirect error information to std::cerr
		db.set_error_stream( &std::cerr );

		// Open the database
		db.open( NULL, db_file_name.c_str(), NULL, DB_BTREE, open_flags, 0 );
	}
	catch( DbException &e )
	{
		std::cerr << "Error opening database: " << db_file_name.c_str() << std::endl;
		std::cerr << e.what() << std::endl;
	}
	catch( std::exception &e )
	{
		std::cerr << "Error opening database: " << db_file_name.c_str() << std::endl;
		std::cerr << e.what() << std::endl;
	}
}

my_db::~my_db()
{
	close();
}

void my_db::close()
{
	try
	{
		db.close( 0 );
		std::cout << "database " << db_file_name.c_str() << " is closed." << std::endl;
	}
	catch( DbException &e )
	{
		std::cerr << "Error closing database: " << db_file_name.c_str() << std::endl;
		std::cerr << e.what();
	}
	catch( std::exception &e )
	{
		std::cerr << "Error closing database: " << db_file_name.c_str() << std::endl;
		std::cerr << e.what();
	}
}

int main()
{

	return 0;
}
Mit diesem scheinbar harmlosen Code bekomme ich folgende Fehler:

Code: Alles auswählen

Fehler	1	error C2039: 'iterator_category': Ist kein Element von 'std::basic_string<_Elem,_Traits,_Ax>'	c:\programme\microsoft visual studio 8\vc\include\xutility	610

Fehler	2	error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'iterator_category'	c:\programme\microsoft visual studio 8\vc\include\xutility	610

Fehler	3	error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.	c:\programme\microsoft visual studio 8\vc\include\xutility	610

Fehler	4	error C2602: 'std::iterator_traits<_Iter>::iterator_category' ist kein Element einer Basisklasse von 'std::iterator_traits<_Iter>'	c:\programme\microsoft visual studio 8\vc\include\xutility	610

Fehler	5	error C2868: 'std::iterator_traits<_Iter>::iterator_category': Unzulässige Syntax für using-Deklaration; vollständiger Name erwartet	c:\programme\microsoft visual studio 8\vc\include\xutility	610

Fehler	6	error C2664: 'void std::basic_string<_Elem,_Traits,_Ax>::_Construct<_It>(_It,_It,std::_Int_iterator_tag)': Konvertierung des Parameters 3 von 'int' in 'std::_Int_iterator_tag' nicht möglich	c:\programme\microsoft visual studio 8\vc\include\xstring	681
Der Debugger verweist nur auf die xuitility und xstring... Hat jemand ne Ahnung, an was das liegen könnte? Falsches include?
Zuletzt geändert von Exasperation am 12. Februar 2010 12:48, insgesamt 1-mal geändert.
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Das Include ist <string> und nicht <string.h> versuch es mal damit.
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag von Exasperation »

Das hatte ich schon versucht, hat leider zum selben Ergebnis geführt... :/
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag von Exasperation »

Mit meiner Konzentration isses heut irgendwie nicht so... -.-
War nur ne bescheuerte Unaufmerksamkeit....

Code: Alles auswählen

my_db::my_db( std::string &path, std::string db_name ) : db( NULL, 0 ), db_file_name( path + db_name ), open_flags( DB_CREATE )
{
...
}
Bei db_file_name wollte ich den Pfad zur db zusammenbauen und hab mit , statt + verbunden... War ein bisschen zu sehr "hingeklatscht". Unkonzentriertes Arbeiten tut weh.
Antworten