<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[c in c++]]></title><description><![CDATA[<p>Hey!<br />
habe ein problem,ich habe ein c programm geschrieben und muss es jetzt in c++ umschreiben,habe aber noch nie irgendwas mit c++ gemacht...<br />
SORRY,das ist jetzt ein bischen viel aber ich hab keinen plan und bekomme fehlermeldungen die ich nicht verstehe...das createbook soll ein konstructor werden,wäre nett wenn mir jemand zeigt wie vieleicht der konstructor und die insert() aussehen sollte,müsste den rest dann selber schaffen..hoffe ich...die main.cpp hab ich soweit geändert,das alle printf und scanf std::cout&lt;&lt; und std::cin&gt;&gt; sind...Danke!!!doch nicht mehr so viel musste nen teil löschen...sind jetzt nur noch create und insert drin...<br />
main.c</p>
<pre><code>#include &quot;phonebook.h&quot;

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

int main(void)
{
    int i;
	char *p, name[30], num[20];
	phoneBook_t *mybook;

    if( (mybook = createBook()) == NULL) {
		//perror dient zur ausgabe einer fehlermeldung
		//der text in klammern wird um die interne fehlermeldung ergänzt
		perror(&quot;malloc&quot;);
		return 0;
	} 

	//insert(mybook, &quot;Jan&quot;, &quot;2345&quot;);	
	//insert(mybook, &quot;Lena&quot;, &quot;6789&quot;);	
	//insert(mybook, &quot;Bo&quot;, &quot;1290&quot;);	

    while(1) {
		puts(&quot;\t1: Eingabe&quot;);
		puts(&quot;\t0: QUIT\n&quot;);

		scanf(&quot;%d&quot;,&amp;i); fflush(stdin);

		switch(i) {
				case 0:
					destroyBook(mybook);
				return 0;
				case 1:
					printf(&quot;Name: &quot;);
					scanf(&quot;%29s&quot;,name); fflush(stdin);
					printf(&quot;Nummer: &quot;);
					scanf(&quot;%19s&quot;,num); fflush(stdin);
					insert(mybook, name, num);		
				break;

		}
    }

	return 1;
}
</code></pre>
<p>phonebook.c</p>
<pre><code>#include &quot;phonebook.h&quot;

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

phoneBook_t *createBook()
{
	phoneBook_t *mybook;
	//malloc gibt einen void pointer zurück,oder NULL wenn der speicher nicht verfügbar ist.
    mybook = (phoneBook_t *)malloc(sizeof(phoneBook_t));
	//mybook-&gt;name = *mybook.name 
	mybook-&gt;pnext = NULL;
	return mybook;
}

//gesamtes buch loeschen
void destroyBook(phoneBook_t *book){
	phoneBook_t *next;
	if(book-&gt;pnext == NULL) {
		free(book);
		return;
	}
	while(book-&gt;pnext != NULL) {
		next = book;
		book = book-&gt;pnext;
		free(next);
	}
}

//buch einlesen und erweitern
void insert(phoneBook_t *book, char *name, char *num)
{	
   phoneBook_t *entry;
	//wenn das !=0 ist der name schon da
    if(search_name(book, name)) {
		printf(&quot;Name ist schon gespeichert\n&quot;);
		return;
	}

    if( (entry = (phoneBook_t *)malloc(sizeof(phoneBook_t))) == NULL){
		perror(&quot;malloc&quot;);
		return;
    }
	//strncpy aequivalent zu strcpy,jedoch werden hoechstens n zeichen uebertragen
    strncpy(entry-&gt;name, name, 30);
    strncpy(entry-&gt;num, num, 20);
	entry-&gt;pnext = NULL;

   while(book-&gt;pnext != NULL)
		book = book-&gt;pnext;
    book-&gt;pnext = entry;
}

//sucht ob es den namen schon gibt
int search_name(phoneBook_t *book, char *name){
	if(book-&gt;pnext == NULL) 
		return 0;
	else 
		while(book-&gt;pnext != NULL) {
			//strcmp vergleicht die zeichenfolge
			if(!strcmp(book-&gt;name,name)) 
				return 1;
			book = book-&gt;pnext;
		}
	if(!strcmp(book-&gt;name,name)) 
		return 1;
	else 
		return 0;
}

}
</code></pre>
<p>phonebook.h</p>
<pre><code>struct phoneb {
    char name[30];
    char num[20];
    struct phoneb *pnext;
};

typedef struct phoneb phoneBook_t;

phoneBook_t *createBook();
void insert(phoneBook_t *book, char *name, char *num);
char *getNumber(phoneBook_t *book, char *name);
char *getName(phoneBook_t *book, char *num);
void delete_it(phoneBook_t *book, char *name);
void destroyBook(phoneBook_t *book);
void list_book(phoneBook_t *book);
int search_name(phoneBook_t *book, char *name);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/180762/c-in-c</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 10:51:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180762.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 May 2007 12:34:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to c in c++ on Sun, 06 May 2007 12:34:13 GMT]]></title><description><![CDATA[<p>Hey!<br />
habe ein problem,ich habe ein c programm geschrieben und muss es jetzt in c++ umschreiben,habe aber noch nie irgendwas mit c++ gemacht...<br />
SORRY,das ist jetzt ein bischen viel aber ich hab keinen plan und bekomme fehlermeldungen die ich nicht verstehe...das createbook soll ein konstructor werden,wäre nett wenn mir jemand zeigt wie vieleicht der konstructor und die insert() aussehen sollte,müsste den rest dann selber schaffen..hoffe ich...die main.cpp hab ich soweit geändert,das alle printf und scanf std::cout&lt;&lt; und std::cin&gt;&gt; sind...Danke!!!doch nicht mehr so viel musste nen teil löschen...sind jetzt nur noch create und insert drin...<br />
main.c</p>
<pre><code>#include &quot;phonebook.h&quot;

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

int main(void)
{
    int i;
	char *p, name[30], num[20];
	phoneBook_t *mybook;

    if( (mybook = createBook()) == NULL) {
		//perror dient zur ausgabe einer fehlermeldung
		//der text in klammern wird um die interne fehlermeldung ergänzt
		perror(&quot;malloc&quot;);
		return 0;
	} 

	//insert(mybook, &quot;Jan&quot;, &quot;2345&quot;);	
	//insert(mybook, &quot;Lena&quot;, &quot;6789&quot;);	
	//insert(mybook, &quot;Bo&quot;, &quot;1290&quot;);	

    while(1) {
		puts(&quot;\t1: Eingabe&quot;);
		puts(&quot;\t0: QUIT\n&quot;);

		scanf(&quot;%d&quot;,&amp;i); fflush(stdin);

		switch(i) {
				case 0:
					destroyBook(mybook);
				return 0;
				case 1:
					printf(&quot;Name: &quot;);
					scanf(&quot;%29s&quot;,name); fflush(stdin);
					printf(&quot;Nummer: &quot;);
					scanf(&quot;%19s&quot;,num); fflush(stdin);
					insert(mybook, name, num);		
				break;

		}
    }

	return 1;
}
</code></pre>
<p>phonebook.c</p>
<pre><code>#include &quot;phonebook.h&quot;

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

phoneBook_t *createBook()
{
	phoneBook_t *mybook;
	//malloc gibt einen void pointer zurück,oder NULL wenn der speicher nicht verfügbar ist.
    mybook = (phoneBook_t *)malloc(sizeof(phoneBook_t));
	//mybook-&gt;name = *mybook.name 
	mybook-&gt;pnext = NULL;
	return mybook;
}

//gesamtes buch loeschen
void destroyBook(phoneBook_t *book){
	phoneBook_t *next;
	if(book-&gt;pnext == NULL) {
		free(book);
		return;
	}
	while(book-&gt;pnext != NULL) {
		next = book;
		book = book-&gt;pnext;
		free(next);
	}
}

//buch einlesen und erweitern
void insert(phoneBook_t *book, char *name, char *num)
{	
   phoneBook_t *entry;
	//wenn das !=0 ist der name schon da
    if(search_name(book, name)) {
		printf(&quot;Name ist schon gespeichert\n&quot;);
		return;
	}

    if( (entry = (phoneBook_t *)malloc(sizeof(phoneBook_t))) == NULL){
		perror(&quot;malloc&quot;);
		return;
    }
	//strncpy aequivalent zu strcpy,jedoch werden hoechstens n zeichen uebertragen
    strncpy(entry-&gt;name, name, 30);
    strncpy(entry-&gt;num, num, 20);
	entry-&gt;pnext = NULL;

   while(book-&gt;pnext != NULL)
		book = book-&gt;pnext;
    book-&gt;pnext = entry;
}

//sucht ob es den namen schon gibt
int search_name(phoneBook_t *book, char *name){
	if(book-&gt;pnext == NULL) 
		return 0;
	else 
		while(book-&gt;pnext != NULL) {
			//strcmp vergleicht die zeichenfolge
			if(!strcmp(book-&gt;name,name)) 
				return 1;
			book = book-&gt;pnext;
		}
	if(!strcmp(book-&gt;name,name)) 
		return 1;
	else 
		return 0;
}

}
</code></pre>
<p>phonebook.h</p>
<pre><code>struct phoneb {
    char name[30];
    char num[20];
    struct phoneb *pnext;
};

typedef struct phoneb phoneBook_t;

phoneBook_t *createBook();
void insert(phoneBook_t *book, char *name, char *num);
char *getNumber(phoneBook_t *book, char *name);
char *getName(phoneBook_t *book, char *num);
void delete_it(phoneBook_t *book, char *name);
void destroyBook(phoneBook_t *book);
void list_book(phoneBook_t *book);
int search_name(phoneBook_t *book, char *name);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1279642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279642</guid><dc:creator><![CDATA[Steffi..]]></dc:creator><pubDate>Sun, 06 May 2007 12:34:13 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sun, 06 May 2007 13:22:32 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-9713.html" rel="nofollow">estartu</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-1.html" rel="nofollow">MFC (Visual C++)</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279666</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sun, 06 May 2007 13:22:32 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sun, 06 May 2007 20:50:07 GMT]]></title><description><![CDATA[<p>Hallo Steffi,</p>
<p>ich hoffe du kuckst dir den Code hier gut an, damit du deine Hausaufgaben<br />
das nächste mal alleine machen kannst... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>main.cpp:</p>
<pre><code class="language-cpp">#include &quot;phonebook.h&quot;

#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;conio.h&gt;

int main(void){
 	try{
	 	PhoneBook book;
	 	char my_char = 0;
		// ersetzt createBook(), falls nicht möglich wird ne Exception geworfen

	    book.insert(&quot;Jan&quot;, &quot;2345&quot;);   
	    book.insert(&quot;Lena&quot;, &quot;6789&quot;);   
	    book.insert(&quot;Bo&quot;, &quot;1290&quot;);   

	    do {
	        std::cout &lt;&lt; &quot;\t1: Eingabe&quot;;
	        std::cout &lt;&lt; &quot;\t0: QUIT&quot; &lt;&lt; std::endl;

			my_char = _getch(); 
	        switch(my_char) {
	                case '1':
	                    std::cout &lt;&lt; &quot;Name: &quot;;
						std::string name;
	                    std::cin &gt;&gt; name;
	                    std::cout &lt;&lt; &quot;Nummer: &quot;;
						std::string nummer;
	                    std::cin &gt;&gt; nummer;
	                    const PhoneBookEntry* entry = book.searchName(name);
	                    if(entry == 0)
	                    	book.insert(name, nummer);
						else
      						std::cout &lt;&lt; &quot;Name existiert bereits &quot; &lt;&lt; entry-&gt;getNumber() &lt;&lt; std::endl;
      						//std::cout &lt;&lt; &quot;Name existiert bereits &quot; &lt;&lt; *book.getNumber(name) &lt;&lt; std::endl;
	        }
	    } while(my_char != '0');
		// Destruktor von PhoneBook wird automatisch aufgerufen,
	    // da auf dem Stack  
	} catch(const std::exception&amp; e){
	  	std::cerr &lt;&lt; &quot;Es ist ein Fehler aufgetreten&quot; &lt;&lt; std::endl;
	}
    return 1;
}
</code></pre>
<p>phonebook.cpp:</p>
<pre><code class="language-cpp">#include &lt;list&gt;
#include &lt;string&gt;

class PhoneBookEntry{
friend class PhoneBook;

public:
	PhoneBookEntry(const std::string&amp; name, const std::string&amp; number);
	~PhoneBookEntry();

	const std::string&amp; getName() const;
	const std::string&amp; getNumber() const;

private:
	std::string name;
	std::string number;

};

class PhoneBook{

public:
	PhoneBook();
	~PhoneBook();

	void insert(const std::string&amp; name, const std::string&amp; number);
	const std::string* getNumber(const std::string&amp; name) const;
	const PhoneBookEntry* searchName(const std::string&amp; name) const; // null wenn nicht vorhanden

	std::list&lt;PhoneBookEntry&gt; list;
};
</code></pre>
<p>phonebook.cpp:</p>
<pre><code class="language-cpp">#include &quot;phonebook.h&quot;

PhoneBook::PhoneBook(){
}

PhoneBook::~PhoneBook(){
}

void PhoneBook::insert(const std::string&amp; name, const std::string&amp; number){
	list.push_back(PhoneBookEntry(name, number));
}

const std::string* PhoneBook::getNumber(const std::string&amp; name) const{
	const PhoneBookEntry* entry = searchName(name);
	if(entry==0)
		return 0;
	else
		return &amp;entry-&gt;number;
}

const PhoneBookEntry* PhoneBook::searchName(const std::string&amp; name) const {		
	for(std::list&lt;PhoneBookEntry&gt;::const_iterator it = list.begin(); it!=list.end(); ++it){
		if(it-&gt;name == name)
		 return &amp;(*it);
	}
	return 0;
}

PhoneBookEntry::PhoneBookEntry(const std::string&amp; name, const std::string&amp; number)
	:name(name), number(number){
}

PhoneBookEntry::~PhoneBookEntry(){
}

const std::string&amp; PhoneBookEntry::getName() const{
	return name;
}
const std::string&amp; PhoneBookEntry::getNumber() const{
	return number;
}
</code></pre>
<p>Ich hoffe, das hilft dir weiter...<br />
Würde mich freuen, wenn du zu Teilen, die du nicht verstehst auch Rückfragen stellst.</p>
<p>EDIT: getline ersetzt.</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279756</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 06 May 2007 20:50:07 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sun, 06 May 2007 17:37:39 GMT]]></title><description><![CDATA[<p>wow danke!!<br />
ja mach ich,ich muss das ganze programm bis freitag fertig haben,bis dahin werde ich also fragen zum code schicken,leider ist c++ noch ein böhmisches dorf,vorallem wenn man als erstes so eine aufgabe bekommt...leider ist das keine hausaufgabe sonst würd ich die spontan nicht machen...</p>
<p>das was ich geschickt habe ist nur ein teil von meinem code der rest sieht so aus das ich namen bzw nummern eingebe und der mir nummer bzw name ausgibt,der muss noch einzelne namen+nummern löschen und eine gesammte liste erstellen...also hab ich noch ein bischen vor mir...<br />
also bis hier erst mal danke!!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279818</guid><dc:creator><![CDATA[Steffi...]]></dc:creator><pubDate>Sun, 06 May 2007 17:37:39 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Mon, 07 May 2007 08:42:57 GMT]]></title><description><![CDATA[<p>so,ich habe schon ein paar fragen...<br />
wofür steht das getline()<br />
getline(std::cin, nummer);</p>
<p>wofür steht in dem zusammenhang das &amp;<br />
PhoneBookEntry::PhoneBookEntry(const std::string&amp; name, const std::string&amp; number)</p>
<p>warum hast du zwei klassen gamacht?<br />
class PhoneBook{<br />
class PhoneBookEntry{</p>
<p>und was ist eine friend class?<br />
friend class PhoneBook;</p>
<p>kann ich die ganzen funktionen zu einer funktion insert zusammen schließen?</p>
<pre><code class="language-cpp">void insert(const std::string&amp; name, const std::string&amp; number);
    const std::string* getNumber(const std::string&amp; name) const;
    const std::string&amp; getName() const;
    const std::string&amp; getNumber() const;
</code></pre>
<p>meine headerdatei war wohl ein bischen doof reingestellt...</p>
<pre><code class="language-cpp">void insert(phoneBook_t *book, char *name, char *num);
</code></pre>
<p>soll namen und nummern einlesen und in search_name suchen ob es den namen schon gibt..</p>
<pre><code class="language-cpp">char *getNumber(phoneBook_t *book, char *name);
</code></pre>
<p>soll zu einem gegebenen namen die nummer suchen</p>
<pre><code class="language-cpp">char *getName(phoneBook_t *book, char *num);
</code></pre>
<p>soll zu einer gegebenen nummer den namen suchen</p>
<pre><code class="language-cpp">void delete_it(phoneBook_t *book, char *name);
</code></pre>
<p>einzelnen wert löschen</p>
<pre><code class="language-cpp">void destroyBook(phoneBook_t *book);
</code></pre>
<p>ganze buch löschen</p>
<pre><code class="language-cpp">void list_book(phoneBook_t *book);
</code></pre>
<p>buch auflisten</p>
<pre><code class="language-cpp">int search_name(phoneBook_t *book, char *name);
</code></pre>
<p>wird von insert aufgerufen soll nach doppelten namen suchen..</p>
<p>weiteres folgt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280109</guid><dc:creator><![CDATA[Steffi...]]></dc:creator><pubDate>Mon, 07 May 2007 08:42:57 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Mon, 07 May 2007 08:53:49 GMT]]></title><description><![CDATA[<p>Steffi... schrieb:</p>
<blockquote>
<p>so,ich habe schon ein paar fragen...<br />
wofür steht das getline()<br />
getline(std::cin, nummer);</p>
</blockquote>
<p>Wie der Name schon sagt - hole eine Zeile. Das ist die C++ Alternative zu fgets().</p>
<blockquote>
<p>wofür steht in dem zusammenhang das &amp;<br />
PhoneBookEntry::PhoneBookEntry(const std::string&amp; name, const std::string&amp; number)</p>
</blockquote>
<p>Übergabe per Referenz.</p>
<blockquote>
<p>warum hast du zwei klassen gamacht?<br />
class PhoneBook{<br />
class PhoneBookEntry{</p>
</blockquote>
<p>PhoneBook für ein komplettes Array, PhoneBookEntry für einen einzelnen Eintrag.</p>
<blockquote>
<p>und was ist eine friend class?<br />
friend class PhoneBook;</p>
</blockquote>
<p>Das ist eine Klasse, die auf die privaten Member zugreifen darf.</p>
<blockquote>
<p>kann ich die ganzen funktionen zu einer funktion insert zusammen schließen?</p>
<pre><code class="language-cpp">void insert(const std::string&amp; name, const std::string&amp; number);
    const std::string* getNumber(const std::string&amp; name) const;
    const std::string&amp; getName() const;
    const std::string&amp; getNumber() const;
</code></pre>
</blockquote>
<p>Wohl kaum - insert() fügt einen Eintrag, die anderen Methoden suchen nach bestehenden Einträgen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280118</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 07 May 2007 08:53:49 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Mon, 07 May 2007 09:28:03 GMT]]></title><description><![CDATA[<p>ja danke!!<br />
dann werde ich wohl weiter probieren müssen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280157</guid><dc:creator><![CDATA[Steffi...]]></dc:creator><pubDate>Mon, 07 May 2007 09:28:03 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Mon, 07 May 2007 12:28:45 GMT]]></title><description><![CDATA[<p>HMm <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a> ... nja fgets nicht ganz, da du ja nicht so einfach mit fopen zugriff auf die Consolenausgabe bekommst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Wäre nen anderer stream angegeben, der dann bsw. ein file-stream wäre, dann wäre wohl fgets die C-Variante. Da hast de recht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280260</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 07 May 2007 12:28:45 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Mon, 07 May 2007 12:34:24 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>HMm <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a> ... nja fgets nicht ganz, da du ja nicht so einfach mit fopen zugriff auf die Consolenausgabe bekommst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Was will mir das jetzt sagen?<br />
fgets() bekommt ein FILE*, getline() einen istream (die C++ Entsprechung zu FILE* (für Eingabe-Dateien). Mit beiden kannst du von Tastatur (stdin bzw. cin - das mußt du übrigens auch nicht per open() der Konsole zuweisen) lesen, wenn du willst. Von daher ist getline() durchaus die logische Entsprechung zu fgets().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280265</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 07 May 2007 12:34:24 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Fri, 11 May 2007 17:34:54 GMT]]></title><description><![CDATA[<p>so ich hab noch ne frage in c gibt es //strcmp vergleicht die zeichenfolge<br />
gibt es sowas auch für strings(nicht für char) habe nichts in büchern gefunden</p>
<p>kann man//copy anstelle für strncpy(strncpy nur für CHAR??) mit dem selben problem...</p>
<p>wie schreib ich das in c++:</p>
<pre><code class="language-cpp">printf(&quot;name:%6s nummer:%6s\n&quot;,inhalt-&gt;name,inhalt-&gt;number);
</code></pre>
<p>kann man das?</p>
<p>das wär es jetzt erst mal...Danke!</p>
<p>denke bin der lösung meines programms nahe...hoffe ich...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283160</guid><dc:creator><![CDATA[Steffi...]]></dc:creator><pubDate>Fri, 11 May 2007 17:34:54 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Fri, 11 May 2007 18:39:29 GMT]]></title><description><![CDATA[<p>joa kann man ...</p>
<pre><code class="language-cpp">std::cout &lt;&lt; &quot;name: &quot; &lt;&lt; std::setw(6) &lt;&lt; inhalt-&gt;name &lt;&lt; &quot; nummer: &quot; &lt;&lt; std::setw(6) &lt;&lt; inhalt-&gt;number &lt;&lt; std::endl;
</code></pre>
<blockquote>
<p>kann man//copy anstelle für strncpy(strncpy nur für CHAR??) mit dem selben problem...</p>
</blockquote>
<p>hmm ganz einfach ... die String-Klasse hat dafür nen operator:</p>
<pre><code class="language-cpp">std::string s1(&quot;Das ist toll!&quot;);
std::string s2 = s1;
</code></pre>
<p>...</p>
<blockquote>
<p>so ich hab noch ne frage in c gibt es //strcmp vergleicht die zeichenfolge<br />
gibt es sowas auch für strings(nicht für char) habe nichts in büchern gefunden</p>
</blockquote>
<p>String-Klasse(std::string) hat auch dafür nen operator (==) ...</p>
<pre><code class="language-cpp">std::string s1(&quot;Das ist toll!&quot;);
std::string s2 = s1;

if (s1 == s2)
    std::cout &lt;&lt; &quot;\&quot;&quot; &lt;&lt; s1 &lt;&lt; &quot;\&quot; == \&quot;&quot; &lt;&lt; s2 &lt;&lt; &quot;\&quot;&quot; &lt;&lt; std::endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1283188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283188</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Fri, 11 May 2007 18:39:29 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 11:08:02 GMT]]></title><description><![CDATA[<p>Danke sehr!!!</p>
<p>habe schon wieder was neues...</p>
<p>ich bekomme die fehlermeldung<br />
error C2451: Bedingter Ausdruck des Typs 'std::string' nicht zulässig</p>
<p>und es wird dann dahin gezeigt...</p>
<pre><code class="language-cpp">void PhoneBook::listbook(){
	while(inhalt-&gt;next == NULL) {
/*diese zeile..*/	if(inhalt-&gt;name)
				inhalt = inhalt-&gt;next;
				//cout &lt;&lt; &quot;name: &quot; &lt;&lt; std::setw(6) &lt;&lt; inhalt-&gt;name &lt;&lt; std::endl;
				//cout&lt;&lt; &quot; nummer: &quot; &lt;&lt; std::setw(6) &lt;&lt; inhalt-&gt;number &lt;&lt; std::endl;
		}
</code></pre>
<p>}</p>
<p>weiß nicht wie ich das richtig machen muss...<br />
Danke!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283372</guid><dc:creator><![CDATA[Steffi...]]></dc:creator><pubDate>Sat, 12 May 2007 11:08:02 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 11:10:18 GMT]]></title><description><![CDATA[<p>Nja du musst schon gucken auf was er testen soll ... aber auf if (inhalt-&gt;name == &quot;&quot;) zu testen ... was soll das bringen?</p>
<pre><code class="language-cpp">if (inhalt-&gt;name == &quot;&quot;) /* an stelle von if (inhalt-&gt;name) */
</code></pre>
<p>... aber wo ist der Sinn?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283376</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 12 May 2007 11:10:18 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 11:24:06 GMT]]></title><description><![CDATA[<p>aber ist es in c nicht so,dass es das gleiche ist?<br />
if(inhalt-&gt;next == NULL){}<br />
if(inhalt-&gt;next){}</p>
<p>habe es in meinem programm jetzt geändert aber dann bekomm ich nen haufen fehler ...<br />
error C2676: Binärer Operator '!=': 'std::string' definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht</p>
<p>error C2784: 'bool std::operator !=(const _Elem *,const std::basic_string&lt;_Elem,_Traits,_Alloc&gt; &amp;)': Vorlagenargument für 'const T1 *' von 'std::string' konnte nicht hergeleitet werden</p>
<p>error C2784: 'bool std::operator !=(const std::basic_string&lt;_Elem,_Traits,_Alloc&gt; &amp;,const _Elem *)': Vorlagenargument für 'const T1 *' von 'int' konnte nicht hergeleitet werden</p>
<p>error C2784: 'bool std::operator !=(const std::istream_iterator&lt;_Ty,_Elem,_Traits,_Diff&gt; &amp;,const std::istream_iterator&lt;_Ty,_Elem,_Traits,_Diff&gt; &amp;)': Vorlagenargument für 'const std::istream_iterator&lt;_Ty,_Elem,_Traits,_Diff&gt; &amp;' von 'std::string' konnte nicht hergeleitet werden</p>
<p>und noch viele mehr alle zeigen auf die selbe zeile...<br />
und die meisten auch mehrmals...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283385</guid><dc:creator><![CDATA[Steffi...]]></dc:creator><pubDate>Sat, 12 May 2007 11:24:06 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 11:31:58 GMT]]></title><description><![CDATA[<p>? Also</p>
<pre><code class="language-cpp">if(inhalt-&gt;next == NULL)
</code></pre>
<p>würde folgendem entsprechen</p>
<pre><code class="language-cpp">if(!inhalt-&gt;next)
</code></pre>
<p>...</p>
<p>Da inhalt-&gt;name aber ein std::string und kein char* (bzw. überhaupt Zeiger) ist, kannst du schlecht auf NULL prüfen. Du musst prüfen ob der string leer ist.</p>
<pre><code class="language-cpp">if (inhalt-&gt;name.empty() == true) // er ist leer!
// if (inhalt-&gt;name.empty()) /* ist das selbe als wenn du auf true prüfst */
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283391</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 12 May 2007 11:31:58 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 11:48:11 GMT]]></title><description><![CDATA[<p>danke es läuft soweit,naja es kommen keine fehler meldungen mehr...<br />
meine Exception wirft sofort aus das es den namen schon gibt...<br />
also mal schaun wo ich in der search den fehler eingebaut habe...</p>
<p>DANKE!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283409</guid><dc:creator><![CDATA[Steffi...]]></dc:creator><pubDate>Sat, 12 May 2007 11:48:11 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 11:52:51 GMT]]></title><description><![CDATA[<p>hab schon das nächste...</p>
<pre><code class="language-cpp">void PhoneBook::insert(string name,string number){
	element *eintrag;
	if(search(name)){
		throw xinsert();
		return;
	}
	inhalt-&gt;name=name;		
    inhalt-&gt;number= number;
	inhalt-&gt;next = NULL;

   while(eintrag-&gt;next != NULL)
		eintrag = inhalt-&gt;next;
		eintrag-&gt;next = eintrag;
}
</code></pre>
<p>warum gibt er mir ne warnung aus das er eintrag nicht kennt<br />
warning C4700: Lokale Variable 'eintrag' wurde ohne Initialisierung verwendet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283414</guid><dc:creator><![CDATA[Steffi...]]></dc:creator><pubDate>Sat, 12 May 2007 11:52:51 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 13:12:47 GMT]]></title><description><![CDATA[<p>nja das geht nicht was du da hast. Du musst &quot;eintrag&quot; auch auf was zeigen lassen ... momentan zeigt er ins Nirvana ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283459</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 12 May 2007 13:12:47 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 13:40:34 GMT]]></title><description><![CDATA[<p>aber wenn ich mit der maus auf eintrag-&gt;next gehe zeigt er mir das eintrag ein element*eintrag ist, und next element*element::next;ihm sind doch alle bekannt??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283469</guid><dc:creator><![CDATA[Steffi...]]></dc:creator><pubDate>Sat, 12 May 2007 13:40:34 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 13:45:54 GMT]]></title><description><![CDATA[<p>Ja er kennt die Variablen ... das ist klar. Aber du kannst ja nicht auf irgend eine Stelle im Speicher zeigen und erwarten das du da was verändern darfst!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283475</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 12 May 2007 13:45:54 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 13:52:19 GMT]]></title><description><![CDATA[<p>wie kann ich das umgehen und insert liest trotzdem richtig ein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283480</guid><dc:creator><![CDATA[Steffi...]]></dc:creator><pubDate>Sat, 12 May 2007 13:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 14:40:33 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich finde der Container map der Standardbibliothek eignet sich ganz hervorragend für solche Aufgaben. Hoffe, dass ich keine Verweise auf std::map beim übergliegen des Themas übersehen habe. Hier meine Lösung (weitesgehend ungetestet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> ...</p>
<pre><code class="language-cpp">// phonebook.h
#ifndef __PHONEBOOK_H__
#define __PHONEBOOK_H__

#include &lt;string&gt;
#include &lt;map&gt;
#include &lt;iostream&gt;

class PhoneBook {
  typedef unsigned int value_type;
  typedef std::map&lt;std::string, value_type&gt; container_type;
  container_type v;

public:
  typedef value_type number_type;
  void insert(const std::string &amp;name, number_type number);

  number_type getNumber(const std::string &amp;name);
  std::string getName(number_type number);
  bool listBook(std::ostream &amp;os);
};

#endif
</code></pre>
<pre><code class="language-cpp">// phonebook.cpp
#include &quot;phonebook.h&quot;
using namespace std;

void PhoneBook::insert(const string &amp;name, number_type number) {
  v[name] = number;
}

PhoneBook::number_type PhoneBook::getNumber(const string &amp;name) {
  return v[name];
}

string PhoneBook::getName(number_type number) {
  container_type::const_iterator i = v.begin();
  while (i != v.end()) {
    if (i-&gt;second == number)
      return i-&gt;first;
    ++i;
  }
}

bool PhoneBook::listBook(ostream &amp;os) {
  container_type::const_iterator i = v.begin();
  while (i != v.end()) {
    os &lt;&lt; i-&gt;first &lt;&lt; &quot;: &quot; &lt;&lt; i-&gt;second &lt;&lt; endl;
    ++i;
  }
}
</code></pre>
<pre><code class="language-cpp">// main.cpp
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cassert&gt;
#include &quot;phonebook.h&quot;
using namespace std;

int main()
{
  PhoneBook v;

  v.insert(&quot;lucky_tux&quot;, 1234567);
  v.insert(&quot;Martin&quot;, 123);
  v.insert(&quot;P1&quot;, 124);
  v.insert(&quot;P2&quot;, 125);

  assert(v.getNumber(&quot;lucky_tux&quot;) == 1234567);
  assert(v.getName(1234567) == &quot;lucky_tux&quot;);

  v.listBook(cout);
}
</code></pre>
<p>Was haltet ihr von diesem Ansatz? Bin wie immer auch über negative Kritik dankbar...</p>
<p>Grüße Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283508</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 12 May 2007 14:40:33 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 14:44:16 GMT]]></title><description><![CDATA[<p>von deinen Ganzen typedefs halte ich recht wenig ... nutz einfach durchgehen den std::size_t - Typ und fertig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283512</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 12 May 2007 14:44:16 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 14:52:33 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>von deinen Ganzen typedefs halte ich recht wenig ... nutz einfach durchgehen den std::size_t - Typ und fertig.</p>
</blockquote>
<p>Wie der Name ja schon sagt, ist size_t ursprünglich für Größenangaben gedacht. Deswegen könnte die Verwendung von size_t ein wenig verwirrend sein?</p>
<p>Danke für den Hinweis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283517</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 12 May 2007 14:52:33 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sat, 12 May 2007 15:15:33 GMT]]></title><description><![CDATA[<p>hi!<br />
soweit ich das verstehe steht eine ähnliche lösung auf seite eins,<br />
und soweit ich das programm verstehe sind getname und getnummer funktionen(?)die eingegebene werte an insert weiter/zurück geben(noch richtig?)<br />
in meiner aufgabe ist es jedoch so das ich in insert namen und nummer eingeben soll,und es soll durch ein search() im insert() verhindert werden das ein name doppelt vorkommt...<br />
mein getname() und getnummer() sind eigene funktionen die im &quot;buch&quot; nach einem namen bzw. einer nummer suchen, nachdem man eine nummer bzw einen namen eingegeben hat.<br />
dann gibt es noch einen menuepunkt listbook() der die ganze liste ausgeben soll;<br />
und noch delete_it() um einen einzelnen wert zu löschen...<br />
natürlich gibt es auch einen konstruktor und einen dekonstruktor und eine Exception in der search(),die &quot;werfen&quot; soll ob ob es den namen schon gibt...</p>
<p>in c ist das eine verkettete liste und läuft ohne probleme...<br />
ob es sowas auch in c++ gibt weis ich nicht,da das mein erstes c++ programm werden soll...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283536</guid><dc:creator><![CDATA[Steffi...]]></dc:creator><pubDate>Sat, 12 May 2007 15:15:33 GMT</pubDate></item><item><title><![CDATA[Reply to c in c++ on Sun, 13 May 2007 08:48:31 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<blockquote>
<p>in meiner aufgabe ist es jedoch so das ich in insert namen und nummer eingeben soll,und es soll durch ein search() im insert() verhindert werden das ein name doppelt vorkommt...<br />
mein getname() und getnummer() sind eigene funktionen die im &quot;buch&quot; nach einem namen bzw. einer nummer suchen, nachdem man eine nummer bzw einen namen eingegeben hat.</p>
</blockquote>
<p>Map ist ein Container der STL, welcher jedem Schlüssel einen Wert zuordnet. Diese Schlüssel/Wert-Zuordnung ist eindeutig, d.h. mit der Anweisung v[wert] erzeugst du einen neuen Eintrag sofern &quot;wert&quot; noch nicht als Schlüssel vorhanden ist oder greifst auf den Eintrag zu wenn bereits eine Zuordnung mit &quot;wert&quot; stattgefunden hat.</p>
<p>Grüße Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283843</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 13 May 2007 08:48:31 GMT</pubDate></item></channel></rss>