dev C++ simple program WAS working, now getting error

Posted on 2008-06-24
Last Modified: 2013-12-14
I am using Dev C++ and am getting the stated error.  attached is where i include the ConfigFile header that is giving me the grief.

I just can't find an error.  Can someone help?
#include <cstdlib>

#include <iostream>

#include "ConfigFile.h"

#include "Triplet.h"

#include <windows.h>

#include <wininet.h>

#include <string>

#include <fstream>

#include <io.h>

using std::string;

using std::cout;

using std::endl;

using namespace std;

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


    //initialize variables


    string ssid;

    string ftp_server;

    string username;

    string password;

    string pos_data_loc;

    string pos_data_file;

    string server_file;

    string data_string;

    string prog_call;

    const char* prog_input;


    std::time_t now;

    time( &now );


    // Load the Config File

	ConfigFile config( "C:/Intelitap/config.inf" );


	// Read the various config lines into variables so we can use them in other places	

	//config.readInto( ssid, "ssid" );...

Open in new window

Question by:jamied66
  • 3
  • 2
  • 2
  • +1
LVL 30

Expert Comment

ID: 21856125
Hi  jamied66,

the linker mentions the ctor ConfigFile::ConfigFile(sdt::string... cannot be found - either it's not implemented or the file where it's implemented isn't compiled or the generated .obj file cannot be found in the lib-path.

Hope that helps,

LVL 40

Expert Comment

ID: 21856141
>> undefined reference to 'ConfigFile::ConfigFile(sdt::string...
Are you actually building the translation unit that contains the implementation for this class? Have you declared a cosntructor for the class ConfigFile and forgotten to implement it?
LVL 19

Expert Comment

ID: 21856179
The error states "...ConfigFile::ConfigFile(sdt::string" sdt::string should be std::string

Check the file ConfigFile.cpp where you define the constructor for the ConfigFile object and change sdt::string to std::string or you could omit it completely since you have using namespace std;

Author Comment

ID: 21856239
I didn't write the ConfigFile library myself, no.
i've attached ConfigFile.cpp.  From what I can see it's in good order.

the above typo (sdt instead of std) was just that. a typo on my part.

Again, all help is appreciated.


// ConfigFile.cpp

#include "ConfigFile.h"

using std::string;

ConfigFile::ConfigFile( string filename, string delimiter,

                        string comment, string sentry )

	: myDelimiter(delimiter), myComment(comment), mySentry(sentry)


	// Construct a ConfigFile, getting keys and values from given file


	std::ifstream in( filename.c_str() );


	if( !in ) throw file_not_found( filename ); 


	in >> (*this);



	: myDelimiter( string(1,'=') ), myComment( string(1,'#') )


	// Construct a ConfigFile without a file; empty


void ConfigFile::remove( const string& key )


	// Remove key and its value

	myContents.erase( myContents.find( key ) );



bool ConfigFile::keyExists( const string& key ) const


	// Indicate whether key is found

	mapci p = myContents.find( key );

	return ( p != myContents.end() );


/* static */

void ConfigFile::trim( string& s )


	// Remove leading and trailing whitespace

	static const char whitespace[] = " \n\t\v\r\f";

	s.erase( 0, s.find_first_not_of(whitespace) );

	s.erase( s.find_last_not_of(whitespace) + 1U );


std::ostream& operator<<( std::ostream& os, const ConfigFile& cf )


	// Save a ConfigFile to os

	for( ConfigFile::mapci p = cf.myContents.begin();

	     p != cf.myContents.end();

		 ++p )


		os << p->first << " " << cf.myDelimiter << " ";

		os << p->second << std::endl;


	return os;


std::istream& operator>>( std::istream& is, ConfigFile& cf )


	// Load a ConfigFile from is

	// Read in keys and values, keeping internal whitespace

	typedef string::size_type pos;

	const string& delim  = cf.myDelimiter;  // separator

	const string& comm   = cf.myComment;    // comment

	const string& sentry = cf.mySentry;     // end of file sentry

	const pos skip = delim.length();        // length of separator


	string nextline = "";  // might need to read ahead to see where value ends


	while( is || nextline.length() > 0 )


		// Read an entire line at a time

		string line;

		if( nextline.length() > 0 )


			line = nextline;  // we read ahead; use it now

			nextline = "";




			std::getline( is, line );



		// Ignore comments

		line = line.substr( 0, line.find(comm) );


		// Check for end of file sentry

		if( sentry != "" && line.find(sentry) != string::npos ) return is;


		// Parse the line if it contains a delimiter

		pos delimPos = line.find( delim );

		if( delimPos < string::npos )


			// Extract the key

			string key = line.substr( 0, delimPos );

			line.replace( 0, delimPos+skip, "" );


			// See if value continues on the next line

			// Stop at blank line, next line with a key, end of stream,

			// or end of file sentry

			bool terminate = false;

			while( !terminate && is )


				std::getline( is, nextline );

				terminate = true;


				string nlcopy = nextline;


				if( nlcopy == "" ) continue;


				nextline = nextline.substr( 0, nextline.find(comm) );

				if( nextline.find(delim) != string::npos )


				if( sentry != "" && nextline.find(sentry) != string::npos )



				nlcopy = nextline;


				if( nlcopy != "" ) line += "\n";

				line += nextline;

				terminate = false;



			// Store key and value



			cf.myContents[key] = line;  // overwrites if key is repeated




	return is;


Open in new window

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline


Accepted Solution

jamied66 earned 0 total points
ID: 21857043
I figured it out myself.  turns out the files were deleted from the project, so they weren't intialzing, even though the files were still there.  

LVL 30

Assisted Solution

Zoppo earned 250 total points
ID: 21857111
That's what I meant with 'the file where it's implemented isn't compiled' ...
LVL 40

Assisted Solution

evilrix earned 250 total points
ID: 21857857
>> I figured it out myself.  turns out the files were deleted from the project, so they weren't intialzing, even though the files were still there.  
Both Zoppo and I pointed this out in the first 2 answers you received. This being the case I see no valid reason to delete this question.
LVL 30

Expert Comment

ID: 21863213
There are objections:

Both evilrix and me gave the hint that it might be the file in question wasn't compiled - that's exactly what jamied66 'figured out' himself ...

Best regards,


Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

This article shows you how to optimize memory allocations in C++ using placement new. Applicable especially to usecases dealing with creation of large number of objects. A brief on problem: Lets take example problem for simplicity: - I have a G…
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
The viewer will learn how to use NetBeans IDE 8.0 for Windows to connect to a MySQL database. Open Services Panel: Create a new connection using New Connection Wizard: Create a test database called eetutorial: Create a new test tabel called ee…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now