<?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[merkwürdiges verhalten von getline?]]></title><description><![CDATA[<p>hallo, ich hab da ein kleines problemchen</p>
<p>irgendwie spinnt da was.</p>
<pre><code class="language-cpp">int servHandle::config(const std::string&amp; file)
{
	bool pathState=false;
	bool portState=false;
	bool enableLog=false;
	std::string logfile=&quot;null&quot;;
	std::ifstream stream(file.c_str()); 
	if(!stream){
		std::cout&lt;&lt;&quot;\nError: no licserv.conf file found\n&quot;;
		return 1;
	}
	else{
		std::string tmp;
		while(!stream.eof()){	
			getline(stream, tmp);
                           //hier is das merkwürdige////////
                           std::cout&lt;&lt;&quot;tmp:&quot;&lt;&lt;tmp&lt;&lt;&quot; foo\n&quot;;
                           ///////////////////////////////// 
			if((tmp.find(&quot;licPath:&quot;, 0)!=std::string::npos)&amp;&amp;(tmp.at(0)!='#')){
				int index=tmp.find(&quot;licPath:&quot;, 0);
				licFile=tmp.substr(index+8);
				pathState=true;
			}
...
</code></pre>
<p>bei der ausgabe std::cout&lt;&lt;&quot;tmp:&quot;&lt;&lt;tmp&lt;&lt;&quot; foo\n&quot;; wird &quot;foo&quot; am anfang der zeile gesetzt, und wenn ich dann licFile=tmp.substr(index+8); mache und das mit std::cout&lt;&lt;licFile&lt;&lt;&quot;foo\n&quot;; ausgebe wird der anfang von licFile mit &quot;foo&quot; überschrieben.</p>
<p>ausgabe--std::cout&lt;&lt;&quot;tmp:&quot;&lt;&lt;tmp&lt;&lt;&quot; foo\n&quot;;<br />
foolicPath:blabla<br />
ausgabe--std::cout&lt;&lt;licFile&lt;&lt;&quot;foo\n&quot;; (licFile=tmp.substr(index+8);)<br />
fooPath:blabla</p>
<p>woran liegt das?</p>
<p>folgende headers benutze ich:</p>
<pre><code class="language-cpp">#include &quot;servHandle.h&quot;
#include &lt;time.h&gt;
#include &lt;iostream&gt;
#include &lt;sys/ioctl.h&gt;
#include &lt;sstream&gt;
#include &lt;fstream&gt;
#include &lt;net/if.h&gt; 
#include &lt;netinet/ether.h&gt; 
#include &lt;string&gt;
#include &lt;map&gt;
#include &lt;pthread.h&gt;
#include &quot;tomcrypt.h&quot;
</code></pre>
<p>gruß part</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200140/merkwürdiges-verhalten-von-getline</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 09:58:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200140.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Dec 2007 09:53:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to merkwürdiges verhalten von getline? on Tue, 11 Dec 2007 09:53:38 GMT]]></title><description><![CDATA[<p>hallo, ich hab da ein kleines problemchen</p>
<p>irgendwie spinnt da was.</p>
<pre><code class="language-cpp">int servHandle::config(const std::string&amp; file)
{
	bool pathState=false;
	bool portState=false;
	bool enableLog=false;
	std::string logfile=&quot;null&quot;;
	std::ifstream stream(file.c_str()); 
	if(!stream){
		std::cout&lt;&lt;&quot;\nError: no licserv.conf file found\n&quot;;
		return 1;
	}
	else{
		std::string tmp;
		while(!stream.eof()){	
			getline(stream, tmp);
                           //hier is das merkwürdige////////
                           std::cout&lt;&lt;&quot;tmp:&quot;&lt;&lt;tmp&lt;&lt;&quot; foo\n&quot;;
                           ///////////////////////////////// 
			if((tmp.find(&quot;licPath:&quot;, 0)!=std::string::npos)&amp;&amp;(tmp.at(0)!='#')){
				int index=tmp.find(&quot;licPath:&quot;, 0);
				licFile=tmp.substr(index+8);
				pathState=true;
			}
...
</code></pre>
<p>bei der ausgabe std::cout&lt;&lt;&quot;tmp:&quot;&lt;&lt;tmp&lt;&lt;&quot; foo\n&quot;; wird &quot;foo&quot; am anfang der zeile gesetzt, und wenn ich dann licFile=tmp.substr(index+8); mache und das mit std::cout&lt;&lt;licFile&lt;&lt;&quot;foo\n&quot;; ausgebe wird der anfang von licFile mit &quot;foo&quot; überschrieben.</p>
<p>ausgabe--std::cout&lt;&lt;&quot;tmp:&quot;&lt;&lt;tmp&lt;&lt;&quot; foo\n&quot;;<br />
foolicPath:blabla<br />
ausgabe--std::cout&lt;&lt;licFile&lt;&lt;&quot;foo\n&quot;; (licFile=tmp.substr(index+8);)<br />
fooPath:blabla</p>
<p>woran liegt das?</p>
<p>folgende headers benutze ich:</p>
<pre><code class="language-cpp">#include &quot;servHandle.h&quot;
#include &lt;time.h&gt;
#include &lt;iostream&gt;
#include &lt;sys/ioctl.h&gt;
#include &lt;sstream&gt;
#include &lt;fstream&gt;
#include &lt;net/if.h&gt; 
#include &lt;netinet/ether.h&gt; 
#include &lt;string&gt;
#include &lt;map&gt;
#include &lt;pthread.h&gt;
#include &quot;tomcrypt.h&quot;
</code></pre>
<p>gruß part</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418600</guid><dc:creator><![CDATA[part]]></dc:creator><pubDate>Tue, 11 Dec 2007 09:53:38 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiges verhalten von getline? on Tue, 11 Dec 2007 09:57:32 GMT]]></title><description><![CDATA[<p>Das Verhalten sieht ganz danach aus, als hättest du eine Textdatei in Binärmodus (oder eine Windows-Datei unter Linux) eingelesen - getline() hat zwar das \n verschluckt, aber nicht das \r aus dem Windows-Zeilenende \r\n (normalerweise sollte letzteres schon vom Stream-Buffer vernichtet werden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418605</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 11 Dec 2007 09:57:32 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiges verhalten von getline? on Tue, 11 Dec 2007 10:07:51 GMT]]></title><description><![CDATA[<p>ja das prog läuft unter linux und die einzulesende datei habe ich unter windows erstellt.</p>
<p>genau das war der fehler <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="🙂"
    /><br />
hab jetz mal getline(stream, tmp; '\r') genommen das funzt.<br />
oder löst man das problem anders?</p>
<p>vielen dank auf jedenfall für die antwort <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1418620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418620</guid><dc:creator><![CDATA[part]]></dc:creator><pubDate>Tue, 11 Dec 2007 10:07:51 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiges verhalten von getline? on Tue, 11 Dec 2007 10:22:11 GMT]]></title><description><![CDATA[<p>Hmm ich würde das einlesen evtl. so gestalten, und nicht abhängig von Variablennamen:</p>
<pre><code class="language-cpp">void servHandle::read_config(std::string const &amp; file_name, std::map&lt;std::string, std::string&gt;&amp; config_data)
{
	config_data.clear();	
	std::ifstream file_stream(file_name.c_str());
	if (!file_stream) throw std::invalid_argument(&quot;could not open file&quot;);

	std::string line_tmp;
	while (std::getline(file_stream, line_tmp))
	{
		std::clog &lt;&lt; &quot;line tmp: \&quot;&quot; &lt;&lt; line_tmp &lt;&lt; &quot;\&quot;&quot; &lt;&lt; std::endl;
		if (line_tmp.at(0) == '#') continue;

		const std::size_t colon_pos(line_tmp.find(':'));
		if (colon_pos == std::string::npos)	continue; /* oder exception, da ungültiger Syntax! */

		config_data[line_tmp.substr(0, colon_pos)] = line_tmp.substr(colon_pos + 1);
	}
}
</code></pre>
<p>...</p>
<p>aja zu deiner Headerauflistung: &lt;ctime&gt; anstelle von &lt;time.h&gt; <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1418625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418625</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 11 Dec 2007 10:22:11 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiges verhalten von getline? on Tue, 11 Dec 2007 10:34:49 GMT]]></title><description><![CDATA[<p>part schrieb:</p>
<blockquote>
<p>hab jetz mal getline(stream, tmp; '\r') genommen das funzt.<br />
oder löst man das problem anders?</p>
</blockquote>
<p>Wenn es dich nicht stört, daß du das NewLine dann am Anfang der nächsten Zeile zurückbleibt (und daß du keine Linx-Dateien damit verarbeiten kannst), dürfte die Lösung ausreichen <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="😉"
    /> Ansonsten müsstest du das überflüssige \r eventuell manuell entfernen:</p>
<pre><code class="language-cpp">getline(stream,tmp);
if(tmp[tmp.size()-1]=='\r') tmp.erase(tmp.size()-1));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1418632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418632</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 11 Dec 2007 10:34:49 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiges verhalten von getline? on Tue, 11 Dec 2007 10:41:51 GMT]]></title><description><![CDATA[<p>(D)evil hab die header geändert <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="😉"
    /><br />
ich les zwar keine linux dateien ein, aber werde trotzdem deine Variante nehmen CStoll die is wohl etwas sauberer.</p>
<p>vielen dank für eure antworten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418637</guid><dc:creator><![CDATA[part]]></dc:creator><pubDate>Tue, 11 Dec 2007 10:41:51 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiges verhalten von getline? on Tue, 11 Dec 2007 10:51:35 GMT]]></title><description><![CDATA[<p>part schrieb:</p>
<blockquote>
<p>ich les zwar keine linux dateien ein, aber werde trotzdem deine Variante nehmen CStoll die is wohl etwas sauberer.</p>
</blockquote>
<p>Randfrage: Was machen Windows Dateien überhaupt auf einem Linux System?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418642</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 11 Dec 2007 10:51:35 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiges verhalten von getline? on Tue, 11 Dec 2007 11:12:57 GMT]]></title><description><![CDATA[<p>es geht um einen floating license server der auch auf linux laufen soll.<br />
die lizenz dateien werden aber unter windows erstellt, da die hier auf arbeit nur windows nutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418658</guid><dc:creator><![CDATA[part]]></dc:creator><pubDate>Tue, 11 Dec 2007 11:12:57 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiges verhalten von getline? on Tue, 11 Dec 2007 11:16:38 GMT]]></title><description><![CDATA[<p>part schrieb:</p>
<blockquote>
<p>es geht um einen floating license server der auch auf linux laufen soll.</p>
</blockquote>
<p>&quot;auch&quot;?</p>
<blockquote>
<p>die lizenz dateien werden aber unter windows erstellt, da die hier auf arbeit nur windows nutzen.</p>
</blockquote>
<p>Wie erstellst du denn die Lizenzdateien? Wenn du das mit C/C++ machst, gibt es eine einfache Lösung - öffne die Dateien (auf beiden Seiten) als ios::binary, dann werden die Zeilenumbrüche nicht mehr für's System umgerechnet, sondern bleiben als nackte '\n' stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418661</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 11 Dec 2007 11:16:38 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiges verhalten von getline? on Tue, 11 Dec 2007 11:40:30 GMT]]></title><description><![CDATA[<p>jo der läuft nun unter windows und linux, jetzt kommt noch unix und das apfel-OS</p>
<p>mach das mit c++ ja, werd das dann mit dem ios::binary machen, vielen dank.<br />
wusste bis eben noch net das windows sowas macht.</p>
<p>gruß part</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418671</guid><dc:creator><![CDATA[part]]></dc:creator><pubDate>Tue, 11 Dec 2007 11:40:30 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiges verhalten von getline? on Tue, 11 Dec 2007 11:45:19 GMT]]></title><description><![CDATA[<p>part schrieb:</p>
<blockquote>
<p>jo der läuft nun unter windows und linux, jetzt kommt noch unix und das apfel-OS</p>
</blockquote>
<p>Ja, da ist es definitiv besser, sich nicht auf den Textmodus zu verlassen - der Apple macht afaik wieder etwas ganz anderes und codiert das Zeilenende als &quot;\n\r&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418678</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 11 Dec 2007 11:45:19 GMT</pubDate></item></channel></rss>