<?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[Gezielte Werte aus Datei auslesen]]></title><description><![CDATA[<p>Ich habe da ein Problem, weil ich mich da nicht so auskenne, aber ich hoffe Ihr könnt mir da helfen.</p>
<p>Ich möchte eine Datei einlesen und einen ganz bestimmten Wert ausgegeben haben.<br />
Der Inhalt der Datei (hier heißt sie test.txt) könnte wie folgt aussehen:</p>
<pre><code>a=1
b=55
c=65
d=57
</code></pre>
<p>Ich möchte nun in diesem Code eine Funktion drin haben, die mir den gewünschten Wert zurückgibt. Die Funktion soll dann heißen:</p>
<pre><code class="language-cpp">int getSetting(const char*)
</code></pre>
<p>Die Funktion sollte dann so angewendet werden:</p>
<pre><code class="language-cpp">int getSetting(&quot;d&quot;)
</code></pre>
<p>Als Rückgabe soll in diesem Beispiel &quot;57&quot; rauskommen.</p>
<p>Dafür habe ich nun diesen Code (Auszug):</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;sstream&gt; 

using namespace std;

#define CONSOLE &quot;/dev/vc/0&quot;
#define TEXT_FILE &quot;/home/userdir/datei.txt&quot;
#define BUFFERSIZE 255
#define BIGBUFFERSIZE 2000

int getSetting(const char*);

int getSetting(const char* wert)
{

  char buf[BUFFERSIZE] = &quot;&quot;;

  FILE* fv = fopen(TEXT_FILE, &quot;r&quot;);
  if (fv)
	  {
       while (fgets(buf, BUFFERSIZE, fv)) 
	  {

		 sscanf(buf,  wert,&quot;=%s&quot;, (char *) &amp;wert);  
      }
	   fclose(fv);
      }

	  const char* s = (einstellung);
	  return atoi(s);
 }	  

int main() 

{

 cout&lt;&lt;getSetting(&quot;d&quot;)&lt;&lt;endl;

}
</code></pre>
<p>Da ich mich da nicht so auskenne, bekomme es einfach nicht hin, dass mir der korrekte Wert ausgegeben wird.<br />
Wenn ich statt wert direkt den Wert &quot;d&quot; drin stehen habe, dann gehts, aber ich möchte das als Function haben, damit ich das nicht dutzende Male machen muß.<br />
Ich hoffe, Ihr könnt mir dabei helfen. Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/154998/gezielte-werte-aus-datei-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 21:08:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/154998.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 01 Aug 2006 15:56:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Tue, 01 Aug 2006 15:56:52 GMT]]></title><description><![CDATA[<p>Ich habe da ein Problem, weil ich mich da nicht so auskenne, aber ich hoffe Ihr könnt mir da helfen.</p>
<p>Ich möchte eine Datei einlesen und einen ganz bestimmten Wert ausgegeben haben.<br />
Der Inhalt der Datei (hier heißt sie test.txt) könnte wie folgt aussehen:</p>
<pre><code>a=1
b=55
c=65
d=57
</code></pre>
<p>Ich möchte nun in diesem Code eine Funktion drin haben, die mir den gewünschten Wert zurückgibt. Die Funktion soll dann heißen:</p>
<pre><code class="language-cpp">int getSetting(const char*)
</code></pre>
<p>Die Funktion sollte dann so angewendet werden:</p>
<pre><code class="language-cpp">int getSetting(&quot;d&quot;)
</code></pre>
<p>Als Rückgabe soll in diesem Beispiel &quot;57&quot; rauskommen.</p>
<p>Dafür habe ich nun diesen Code (Auszug):</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;sstream&gt; 

using namespace std;

#define CONSOLE &quot;/dev/vc/0&quot;
#define TEXT_FILE &quot;/home/userdir/datei.txt&quot;
#define BUFFERSIZE 255
#define BIGBUFFERSIZE 2000

int getSetting(const char*);

int getSetting(const char* wert)
{

  char buf[BUFFERSIZE] = &quot;&quot;;

  FILE* fv = fopen(TEXT_FILE, &quot;r&quot;);
  if (fv)
	  {
       while (fgets(buf, BUFFERSIZE, fv)) 
	  {

		 sscanf(buf,  wert,&quot;=%s&quot;, (char *) &amp;wert);  
      }
	   fclose(fv);
      }

	  const char* s = (einstellung);
	  return atoi(s);
 }	  

int main() 

{

 cout&lt;&lt;getSetting(&quot;d&quot;)&lt;&lt;endl;

}
</code></pre>
<p>Da ich mich da nicht so auskenne, bekomme es einfach nicht hin, dass mir der korrekte Wert ausgegeben wird.<br />
Wenn ich statt wert direkt den Wert &quot;d&quot; drin stehen habe, dann gehts, aber ich möchte das als Function haben, damit ich das nicht dutzende Male machen muß.<br />
Ich hoffe, Ihr könnt mir dabei helfen. Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1108686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1108686</guid><dc:creator><![CDATA[dixidix]]></dc:creator><pubDate>Tue, 01 Aug 2006 15:56:52 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Tue, 01 Aug 2006 18:06:32 GMT]]></title><description><![CDATA[<p>Du benutzt <a href="http://man.cx/sscanf(3)" rel="nofollow">man: sscanf(3)</a> falsch. Wenn du sscanf so benutzen willst, musst du den Formatierungsstring erst erstellen (durch <a href="http://man.cx/strcat(3)" rel="nofollow">man: strcat(3)</a> oä).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1108761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1108761</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Tue, 01 Aug 2006 18:06:32 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Tue, 01 Aug 2006 18:07:01 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=1819" rel="nofollow">kingruedi</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=5" rel="nofollow">Linux/Unix</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" 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/1108762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1108762</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Tue, 01 Aug 2006 18:07:01 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 06:29:28 GMT]]></title><description><![CDATA[<p>Wo und wie müsste den das gemacht werden?<br />
Ich hatte schon mal versucht die wert-Variable einfach mit wert.c_str() einzusetzen, aber das hat nicht das gebracht was ich gerne hätte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1108934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1108934</guid><dc:creator><![CDATA[dixidix]]></dc:creator><pubDate>Wed, 02 Aug 2006 06:29:28 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 09:05:18 GMT]]></title><description><![CDATA[<p>Sind das C++ Funktionen?<br />
Ich würde einfach die entsprechende Zeile mit getline() einlesen, den ersten Teil verwerfen und den Rest als Zahl nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109017</guid><dc:creator><![CDATA[Panke]]></dc:creator><pubDate>Wed, 02 Aug 2006 09:05:18 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 11:07:55 GMT]]></title><description><![CDATA[<blockquote>
<p>Sind das C++ Funktionen?</p>
</blockquote>
<p>Ja, der Code ist für C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109114</guid><dc:creator><![CDATA[dixidix]]></dc:creator><pubDate>Wed, 02 Aug 2006 11:07:55 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 11:11:53 GMT]]></title><description><![CDATA[<p>dixidix schrieb:</p>
<blockquote>
<p>Ja, der Code ist für C++.</p>
</blockquote>
<p>Der Code ist gar nicht C++ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109119</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 02 Aug 2006 11:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 11:21:58 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> HÄ???? Hab ihn doch aber als getSetting.cpp so kompilert und auch das fertige Programm mit g++ getSetting.cpp -o getSet erstellt. Mit gcc geht das nicht. Sorry, bin nur Gelegenheitsprogger. Das muß mir mal jemand genauer erklären warum dieser Code nicht C++ ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109127</guid><dc:creator><![CDATA[dixidix]]></dc:creator><pubDate>Wed, 02 Aug 2006 11:21:58 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 11:44:40 GMT]]></title><description><![CDATA[<p>Zeugs wie stdio.h, fopen, usw. sind Überbleibsel aus C, die zwar in C++ noch verfügbar sind, die man aber nicht mehr verwenden sollte (stattdessen benutzt man fstream).</p>
<p>atoi muß auch nicht unbedingt sein. Dafür könnte man Klassen aus &lt;sstream&gt; verwenden.</p>
<p>char[] ist unter C++ im Allgemeinen kein geeigneter Datentyp um Strings zu verarbeiten. Dafür benutzt man std::string.</p>
<p>Und das hier:</p>
<pre><code class="language-cpp">#define BIGBUFFERSIZE 2000
</code></pre>
<p>geht schon mal gar nicht. In C++ würde man das als:</p>
<pre><code class="language-cpp">const int BIGBUFFERSIZE = 2000;
</code></pre>
<p>schreiben (mal abgesehen davon, daß man Buffer-Size Angaben meist überhaupt nicht mehr braucht, wenn man mit C++ Mitteln arbeitet).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109138</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Wed, 02 Aug 2006 11:44:40 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 12:51:20 GMT]]></title><description><![CDATA[<p>Und in C++ würde das ungefähr auch so aussehen:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;map&gt;
#include &lt;sstream&gt;
#include &lt;iterator&gt;
#include &lt;fstream&gt;
#include &lt;algorithm&gt;
using namespace std;

struct myValue {
	string str;
	int val;
};

istream&amp; operator&gt;&gt;(istream&amp; stream, myValue&amp; mV)
{
	string str;
	getline(stream,str);

	if(!stream.eof())
	{
		mV.str = str.substr(0,str.find('='));

		istringstream iss(str.substr(mV.str.size()+1,str.size() - mV.str.size()));
		iss &gt;&gt; mV.val;
	}

	return stream;
}

class Helper {

	private:
			static map&lt;string,int&gt; mV_map;

	public:

			Helper()  {};
			~Helper() {};

			Helper&amp; operator*()  { return *this; }
    		Helper&amp; operator++() { return *this; }
			//Helper&amp; operator()() { return *this; }

			Helper&amp; operator=(const myValue&amp; mV) 
			{
				mV_map.insert(make_pair(mV.str,mV.val));

				return *this;
			}

		 	void show_map()
			{
				map&lt;string,int&gt;::const_iterator const_it = mV_map.begin();

				while(const_it != mV_map.end())
				{
					cout &lt;&lt; const_it-&gt;first &lt;&lt; &quot; = &quot; &lt;&lt; const_it-&gt;second &lt;&lt; endl;
					++const_it;
				}

				cout &lt;&lt; endl;
			}

			int getValueof(const string&amp; s)
			{
				map&lt;string,int&gt;::const_iterator const_it = mV_map.find(s);

				if(const_it!=mV_map.end()) return const_it-&gt;second;

				return -1;
			}

};

map&lt;string,int&gt; Helper::mV_map;

int main()
{

 	ifstream file(&quot;fu.txt&quot;);
	Helper helper;

	copy(istream_iterator&lt;myValue&gt;(file),istream_iterator&lt;myValue&gt;(),helper);
	file.close();

	helper.show_map();

	cout &lt;&lt; helper.getValueof(&quot;u&quot;) &lt;&lt; endl;
	cout &lt;&lt; helper.getValueof(&quot;b&quot;) &lt;&lt; endl;

	return 0;

}
</code></pre>
<p>Jetzt wäre ich dem jenigen sehr verbunden, wenn er mir sagen könnte wie ich auch ohne dem static auskommen könnte <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/1109197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109197</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 02 Aug 2006 12:51:20 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 17:14:34 GMT]]></title><description><![CDATA[<p>Buuh <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> ... Das is' ja 'n Haufen Holz. So viel!!!? Respekt für die Mühe. Na gut. In VB kenne ich mich da besser aus. Da hätten 20 Zeilen gereicht.<br />
Der g++ Compiler (Linux) meckert aber in der Zeile:</p>
<pre><code class="language-cpp">copy(istream_iterator&lt;myValue&gt;(file),istream_iterator&lt;myValue&gt;(),helper);
</code></pre>
<p>Kann das damit zu tun haben, dass ich das unter Linux mit dem g++ kompiliere?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109381</guid><dc:creator><![CDATA[dixidix]]></dc:creator><pubDate>Wed, 02 Aug 2006 17:14:34 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 16:54:52 GMT]]></title><description><![CDATA[<p>dixidix schrieb:</p>
<blockquote>
<p>Kann das damit zu tun haben, dass ich das unter Linux mit dem g++ kompiliere?</p>
</blockquote>
<p>Nein <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="🙂"
    /> Habe es auch unter Linux mit dem g++ kompiliert. Welche Version hast du ?<br />
Wie gesagt der Code ist eh nicht sauber da ich nicht genau weiß wie ich helper am besten Copy übergebe und somit das static vermeiden könnte.</p>
<p>Mal sehen, es meldet sich eh gleich ein Stl Guru <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109429</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 02 Aug 2006 16:54:52 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 17:22:11 GMT]]></title><description><![CDATA[<p>Ich nutze LinuxSuse10 mit dem g++ 4.0.2.<br />
Na gut, wird sich schon lösen lassen.</p>
<p>Aber nochmal zur Sache ansich. Ich kenne mich da besser mit VB aus. Da hätte ich das mit einigen wenigen Zeile gelöst, aber möchte das auch mit C++ lösen können.</p>
<p>Sehe ich das richtig, dass alles Zeilenweise eingelesen wird?<br />
Ginge es nicht auch so etwas schlanker:<br />
- dass man den kompletten Dateiinhalt als String in eine Variable übergibt.<br />
- dann sucht man den gewünschten Eintrag und übergibt die Position ebenfalls in eine Variable<br />
- von dieser Position ermittelt man die Position des nächsten &quot;=&quot;-Zeichens<br />
- von dieser Position aus bis zum &quot;\n&quot; ermittelt man nun noch den Wert als String, den man dann noch in Integer wandeln müsste und übergibt den Wert noch in eine Variable.<br />
- dann return variable.</p>
<p>Die Schritte 2,3,4 wüsste ich gerne wie man das macht. Gibt es in C++ wie in VB spezielle Funktionen mit dem man die Positionen von Strings ermitteln kann und gibt es Funktionen mit denen man einen String von einer einer bestimmten Position mit einer bestimmten Länge ermitteln kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109442</guid><dc:creator><![CDATA[dixidix]]></dc:creator><pubDate>Wed, 02 Aug 2006 17:22:11 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 17:28:48 GMT]]></title><description><![CDATA[<p>Inwiefern ist das schlanker?<br />
Das geht natürlich aber auch so. Die Klasse string hat einige Funktionen zum Suchen die alle mit find beginnen.<br />
<a href="http://www.cppreference.com/cppstring/index.html" rel="nofollow">http://www.cppreference.com/cppstring/index.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109446</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 02 Aug 2006 17:28:48 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 20:51:43 GMT]]></title><description><![CDATA[<p>dixidix schrieb:</p>
<blockquote>
<p>Ich nutze LinuxSuse10 mit dem g++ 4.0.2.<br />
Na gut, wird sich schon lösen lassen.</p>
</blockquote>
<p>Habe den 3.6.4 er, weil der 4er unter Gentoo noch nicht stable ist. Wie gesagt ist bestimmt irgendwas unsauber daran...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109537</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 02 Aug 2006 20:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 23:41:57 GMT]]></title><description><![CDATA[<p>Dank Euerer Tipps habe ich mir das jetzt mal zusammengeschraubt, so dass es das macht was ich will. Der Link von Braunstein hat da wirklich geholfen.<br />
Bitte nicht dran stören, wenn da etwas mehr Code drin steht, als sein muss.<br />
Für den Zweck wofür ich es brauche, reicht dieser Code völlig aus, aber es geht sicherlich auch anders und einfacher.</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;map&gt;
#include &lt;sstream&gt;
#include &lt;iterator&gt;
#include &lt;fstream&gt;
#include &lt;algorithm&gt;
using namespace std;

int instr(int, string, string);
int len(string);
string mid(string, int, int);
string readfile(string);
int getSetting(string, string);
bool FileExist(string);

//-----------------------------------------------------------------------------
//Kleine Funktion, um die Datei auf Existenz zu prüfen, Warum siehe weiter unten!
bool FileExist(string path)
{
if( (access( path.c_str(), 0 )) != -1 )
    return true;
else
    return false;
}
//-----------------------------------------------------------------------------

string readfile(string path)
//hier wird die Datei eingelesen und der Inhalt als String übergeben
{
	string str;
	string datei;

//hier die Antwort auf das Warum von oben, Bei Bedarf hole ich mir hier eine Alternativdatei.	
	if (FileExist(path.c_str())==true)
	 {
	  string datei(path.c_str());
	 }
        else
        {
          string datei(&quot;Pfad zur alternativen Datei&quot;);
	 }	 

    ifstream Quelle(path.c_str());
         char ch;
         while(Quelle.get(ch))
	     {
             str += ch;
         }

    Quelle.close();
    return str; 
}
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//weil ich &quot;VB-geschädigt&quot; bin, habe ich mir die benötigten Funktionen InStr(), Mid() und Len() zusammengebaut.
//Das macht den Code zwar nicht schlanker,
//aber es hatte für mich sowas wie einen Lerneffekt...
string mid(string str, int startpos, int strlen)
{	
string s(str.c_str());
 string sub2 = s.substr(startpos, strlen); 

   return sub2;
}	

//-----------------------------------------------------------------------------

int instr(int start, string str, string sstr)
{

  string str1(str.c_str()), str2(sstr.c_str());

  string::size_type pos = str1.find( str2, start );

   if( pos != string::npos )
	{
     return pos;
	}	
   else
    {   
     return 0;
	}	

}
//-----------------------------------------------------------------------------

int len(string str)
{    

   string str2(str.c_str());
   string::size_type rlen = str2.size()	;
   return rlen;
}	
//-----------------------------------------------------------------------------

//Hier die eigentliche Function, welche mir die Werte rausholt
int getSetting(string settext, string gessetting)
{
int SetPos;
int readPos;
int EndPos;
int	readlen;
string s1(settext.c_str());
string s2(gessetting.c_str());	

SetPos = (instr(1, s1, s2));
readPos = (instr(SetPos, s1, &quot;=&quot;)) + 1;
EndPos = (instr(readPos, s2, &quot;\n&quot;));

if (EndPos == 0)
	{
	EndPos = len(s1);
	}	

readlen = EndPos - readPos + 1;
string s3(mid(s1, readPos, readlen));	

    stringstream Str;
    Str &lt;&lt; s3;
    int d;
    Str &gt;&gt; d;
    //cout &lt;&lt; d &lt;&lt; endl; 

return d;
}

//-----------------------------------------------------------------------------
//in Main kann diese Funktion ganz einfach eingesetzt werden
int main() 

{

string text(readfile(&quot;Pfad zur gewünschten Datei&quot;));

cout&lt;&lt;(getSetting(text,&quot;Die Bezeichnung des gewünschten Wertes&quot;))&lt;&lt;endl;

return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1109595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109595</guid><dc:creator><![CDATA[dixidix]]></dc:creator><pubDate>Wed, 02 Aug 2006 23:41:57 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Wed, 02 Aug 2006 23:46:55 GMT]]></title><description><![CDATA[<p>ich sehe gerade operatoren...<br />
frage warum muss der operator* eine referenz zurückgeben? ist das irgendwo festgelegt?</p>
<pre><code class="language-cpp">int&amp; foo::operator*() const
{
      return p-&gt;it;
}
</code></pre>
<p>und warum sieht das so aus? gibt pointer zurück...was heisst das &amp;(p-&gt;it) hier?</p>
<pre><code class="language-cpp">int* foo::operator-&gt;() const
{
      return &amp;(p-&gt;it);
}
</code></pre>
<p>ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109597</guid><dc:creator><![CDATA[mannr1]]></dc:creator><pubDate>Wed, 02 Aug 2006 23:46:55 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Thu, 03 Aug 2006 08:46:01 GMT]]></title><description><![CDATA[<p>Nur noch ein paar Hinweise an dixidix</p>
<p>Übergebe strings in Funktionen nie als Kopie (string str) sondern besser als konstante Referenz (nicht konstant falls geändert werden) soll. Also als Beispiel</p>
<pre><code class="language-cpp">string mid(const string&amp; str, int startpos, int strlen)
</code></pre>
<p>Warum diese Stringkopie in deinen Funktionen. Das ist unnötig. Du kannst direkt mit den Parametern arbeiten. Bsp.<br />
aus</p>
<pre><code class="language-cpp">int len(string str)
{    
   string str2(str.c_str());
   string::size_type rlen = str2.size();
   return rlen;
}
</code></pre>
<p>wird dann</p>
<pre><code class="language-cpp">size_t len(const string&amp; str)
{    
   return str.size();
}
</code></pre>
<p>Du kannst die Ergebnisse von Vergleichen auch direkt zurückgeben statt ein if dafür zu verwenden.<br />
aus</p>
<pre><code class="language-cpp">bool FileExist(string path)
{
if( (access( path.c_str(), 0 )) != -1 )
    return true;
else
    return false;
}
</code></pre>
<p>wird dann</p>
<pre><code class="language-cpp">bool FileExist(const string&amp; path)
{
   return access( path.c_str(), 0 ) != -1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1109697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109697</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 03 Aug 2006 08:46:01 GMT</pubDate></item><item><title><![CDATA[Reply to Gezielte Werte aus Datei auslesen on Thu, 03 Aug 2006 12:45:50 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1387">@Braunstein</a><br />
Danke für die Hinweise.</p>
<blockquote>
<p>Warum diese Stringkopie in deinen Funktionen. Das ist unnötig. Du kannst direkt mit den Parametern arbeiten. Bsp.<br />
aus</p>
</blockquote>
<p>Wie gesagt, war sowas wie ein Lerneffekt. Einige Hinweise habe ich übernommen. Wird ja auch kürzer.<br />
Danke! Bis bald!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109892</guid><dc:creator><![CDATA[dixidix]]></dc:creator><pubDate>Thu, 03 Aug 2006 12:45:50 GMT</pubDate></item></channel></rss>