<?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[zeile mit getline holen und mit einem string vergleichen]]></title><description><![CDATA[<p>Heyho Community.<br />
ich habe mich gerade mit folgendem Problem rumgeärgert:<br />
Ich habe mir via getline() eine Zeile aus einer Datei geholt (diese Zeile ist die einzige, also wird eof gesetzt).<br />
Nun entferne ich alle Leerzeichen mit dem Erase-remove idiom.<br />
Die strings sehen nun im QuickWatch identisch aus, nichts desto trotz schlägt der Vergleich mit basic_string.compare() fehl und ich habe keine Ahnung wieso.<br />
Hier mein Code:</p>
<pre><code class="language-cpp">CString input_key(m_strOldLicenseKey); // enthält keine Leerzeichen!
ifstream LicFile(&quot;myfile&quot;);	

if(!LicFile.bad())
{
   string KeyFromFile;
   getline(LicFile, KeyFromFile); // als delimiter wird demnach standardmäßig '\n' genommen

   // KeyFromFile ist jetzt &quot;123456   &quot;

   // leerzeichen entfernen
   KeyFromFile.erase(remove(KeyFromFile.begin(), KeyFromFile.end(), ' '), KeyFromFile.end());

   // KeyFromFile ist jetzt &quot;123456&quot;

   if(LicFile.rdstate() == ios::goodbit || LicFile.rdstate() == ios::eofbit)
   {
      if(KeyFromFile.compare(input_key) == 0) // dieser Vorgang schlägt fehl
      {
           // success
      }
   }
}
</code></pre>
<p>Hat jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272699/zeile-mit-getline-holen-und-mit-einem-string-vergleichen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 18:29:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272699.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Aug 2010 13:54:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to zeile mit getline holen und mit einem string vergleichen on Mon, 23 Aug 2010 13:54:59 GMT]]></title><description><![CDATA[<p>Heyho Community.<br />
ich habe mich gerade mit folgendem Problem rumgeärgert:<br />
Ich habe mir via getline() eine Zeile aus einer Datei geholt (diese Zeile ist die einzige, also wird eof gesetzt).<br />
Nun entferne ich alle Leerzeichen mit dem Erase-remove idiom.<br />
Die strings sehen nun im QuickWatch identisch aus, nichts desto trotz schlägt der Vergleich mit basic_string.compare() fehl und ich habe keine Ahnung wieso.<br />
Hier mein Code:</p>
<pre><code class="language-cpp">CString input_key(m_strOldLicenseKey); // enthält keine Leerzeichen!
ifstream LicFile(&quot;myfile&quot;);	

if(!LicFile.bad())
{
   string KeyFromFile;
   getline(LicFile, KeyFromFile); // als delimiter wird demnach standardmäßig '\n' genommen

   // KeyFromFile ist jetzt &quot;123456   &quot;

   // leerzeichen entfernen
   KeyFromFile.erase(remove(KeyFromFile.begin(), KeyFromFile.end(), ' '), KeyFromFile.end());

   // KeyFromFile ist jetzt &quot;123456&quot;

   if(LicFile.rdstate() == ios::goodbit || LicFile.rdstate() == ios::eofbit)
   {
      if(KeyFromFile.compare(input_key) == 0) // dieser Vorgang schlägt fehl
      {
           // success
      }
   }
}
</code></pre>
<p>Hat jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1943390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1943390</guid><dc:creator><![CDATA[inva]]></dc:creator><pubDate>Mon, 23 Aug 2010 13:54:59 GMT</pubDate></item><item><title><![CDATA[Reply to zeile mit getline holen und mit einem string vergleichen on Mon, 23 Aug 2010 14:28:18 GMT]]></title><description><![CDATA[<p>1. Was heisst &quot;schlägt fehlt&quot;? Gibt es nicht 0 zurück? Was gibt es dann zurück?<br />
2. Wenn du schon die MFC verwendest, wieso verwendest du dann nicht gleich auch<a href="http://msdn.microsoft.com/en-us/library/a499td6y.aspx" rel="nofollow"> <code>CStdioFile</code> </a>?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1943405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1943405</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 23 Aug 2010 14:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to zeile mit getline holen und mit einem string vergleichen on Tue, 24 Aug 2010 07:18:13 GMT]]></title><description><![CDATA[<p>Hey,<br />
Danke für deine Antwort.</p>
<p>Compare liefert 1 zurück.</p>
<p>... und ich weiß nun auch warum:<br />
Die Länge der Strings ist um 1 verschieden, während das CString Objekt &quot;input_key&quot; nur 33 Zeichen hat, enthält das basic_string Objekt &quot;KeyFromFile&quot; 34 Zeichen, hier wird das Stringendezeichen ('\0') mitgezählt und ebenfalls mit zum Vergleich heran gezogen, daher sind sie immer unterschiedlich.</p>
<p>Meine Lösung sieht wie folgt aus, indem ich einfach nur den Vergleich ändere:</p>
<pre><code class="language-cpp">if(input_key.Compare(KeyFromFile.data()) == 0)
{
    // success
}
</code></pre>
<p>Danke für den Beitrag!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1943657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1943657</guid><dc:creator><![CDATA[inva]]></dc:creator><pubDate>Tue, 24 Aug 2010 07:18:13 GMT</pubDate></item></channel></rss>