<?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[Vectoren sortieren, Zahlen erkennen]]></title><description><![CDATA[<p>Hi,<br />
mein Ziel war es eine Datei einzulesen und alle Zeilen mit &quot;/final&quot; in einen Vector und alle anderen in einen anderen zu packen. Ich frag mich bloß ob das nicht besser geht. Sollte ich Funktionen wie isFinal lieber als Lambda machen?<br />
Ich muss die Zeilen noch weiter bearbeiten dafür musste ich überprüfen ob ein Zeichen eine Zahl ist oder nicht. Wie macht man das am besten?<br />
Mit isdigit?<br />
Oder mit stringstream in einen int laden und schauen ob der failbit gesetzt wird?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;cctype&gt;
#include &lt;algorithm&gt;

void removeSemicolon(std::string &amp;str){
	std::size_t pos = str.find(&quot;;&quot;);
	if(pos != std::string::npos)
		str.erase(str.begin() + pos, str.end());
}

bool isFinal(std::string str){ 
	return str.find(&quot;/final&quot;) != std::string::npos; 
}

bool isNotFinal(std::string str){ 
	return str.find(&quot;/final&quot;) == std::string::npos; 
}

bool isEmptyLine(std::string str){
	return str.empty();
}

int main(){
	std::ifstream in(&quot;file&quot;, std::ifstream::in);

	std::vector&lt;std::string&gt; lines;
	while(in){
		std::string line;
		std::getline(in, line);
		lines.push_back(line);
	}
	in.close();

	std::vector&lt;std::string&gt; finals(lines.size());
	lines.erase(std::remove_if(lines.begin(), lines.end(), isEmptyLine), lines.end());
	std::remove_copy_if(lines.begin(), lines.end(), finals.begin(), isNotFinal);
	lines.erase(std::remove_if(lines.begin(), lines.end(), isFinal), lines.end());
	finals.erase(std::remove_if(finals.begin(), finals.end(), isEmptyLine), finals.end());
	for(std::string &amp;out : finals){
		removeSemicolon(out);
		//std::size_t pos = out.find(&quot;/final&quot;);
		//if(pos != std::string::npos)
		//	out.erase(out.begin() + pos, out.begin() + (pos + 6));

		std::cout &lt;&lt; out &lt;&lt; std::endl;
	}
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/326759/vectoren-sortieren-zahlen-erkennen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 25 May 2026 00:50:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326759.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Jul 2014 00:12:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Sun, 06 Jul 2014 00:12:23 GMT]]></title><description><![CDATA[<p>Hi,<br />
mein Ziel war es eine Datei einzulesen und alle Zeilen mit &quot;/final&quot; in einen Vector und alle anderen in einen anderen zu packen. Ich frag mich bloß ob das nicht besser geht. Sollte ich Funktionen wie isFinal lieber als Lambda machen?<br />
Ich muss die Zeilen noch weiter bearbeiten dafür musste ich überprüfen ob ein Zeichen eine Zahl ist oder nicht. Wie macht man das am besten?<br />
Mit isdigit?<br />
Oder mit stringstream in einen int laden und schauen ob der failbit gesetzt wird?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;cctype&gt;
#include &lt;algorithm&gt;

void removeSemicolon(std::string &amp;str){
	std::size_t pos = str.find(&quot;;&quot;);
	if(pos != std::string::npos)
		str.erase(str.begin() + pos, str.end());
}

bool isFinal(std::string str){ 
	return str.find(&quot;/final&quot;) != std::string::npos; 
}

bool isNotFinal(std::string str){ 
	return str.find(&quot;/final&quot;) == std::string::npos; 
}

bool isEmptyLine(std::string str){
	return str.empty();
}

int main(){
	std::ifstream in(&quot;file&quot;, std::ifstream::in);

	std::vector&lt;std::string&gt; lines;
	while(in){
		std::string line;
		std::getline(in, line);
		lines.push_back(line);
	}
	in.close();

	std::vector&lt;std::string&gt; finals(lines.size());
	lines.erase(std::remove_if(lines.begin(), lines.end(), isEmptyLine), lines.end());
	std::remove_copy_if(lines.begin(), lines.end(), finals.begin(), isNotFinal);
	lines.erase(std::remove_if(lines.begin(), lines.end(), isFinal), lines.end());
	finals.erase(std::remove_if(finals.begin(), finals.end(), isEmptyLine), finals.end());
	for(std::string &amp;out : finals){
		removeSemicolon(out);
		//std::size_t pos = out.find(&quot;/final&quot;);
		//if(pos != std::string::npos)
		//	out.erase(out.begin() + pos, out.begin() + (pos + 6));

		std::cout &lt;&lt; out &lt;&lt; std::endl;
	}
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2407178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407178</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Sun, 06 Jul 2014 00:12:23 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Sun, 06 Jul 2014 05:32:35 GMT]]></title><description><![CDATA[<p>Pringles schrieb:</p>
<blockquote>
<p>Hi,<br />
mein Ziel war es eine Datei einzulesen und alle Zeilen mit &quot;/final&quot; in einen Vector und alle anderen in einen anderen zu packen. Ich frag mich bloß ob das nicht besser geht. Sollte ich Funktionen wie isFinal lieber als Lambda machen?<br />
Ich muss die Zeilen noch weiter bearbeiten dafür musste ich überprüfen ob ein Zeichen eine Zahl ist oder nicht. Wie macht man das am besten?</p>
</blockquote>
<p>Was ist es denn wirklich, was Du einlesen willst?<br />
Wohl keine <code>strings</code> , mit oder ohne <em>&quot;/final&quot;</em>, sondern irgendwelche Objekte, die zeilenweise in einer Datei stehen. In diesem Fall würde ich auch direkt solche Objekte lesen und nicht <code>strings</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407184</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Sun, 06 Jul 2014 05:32:35 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Sun, 06 Jul 2014 11:25:44 GMT]]></title><description><![CDATA[<p>Die Datei die ich einlesen möchte sieht in etwa so aus:</p>
<pre><code>game of throne s4e6;
walking dead s4e16;
criminal minds s9e19;
breaking bad s5e16/final;
prison break s4e24/final;
Homeland;
</code></pre>
<p>Die Klasse sollte ungefähr so aussehen:</p>
<pre><code>class serie{
public:
	serie(std::string name, unsigned short staffel, unsigned short episode, bool final) :
		name(name), staffel(staffel), episode(episode), final(final){} //ist es ok das die Parameter und die Memeber den selben Namen haben?
private:
	std::string name;
	unsigned short staffel, episode;
	bool final;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2407223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407223</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Sun, 06 Jul 2014 11:25:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Sun, 06 Jul 2014 16:51:38 GMT]]></title><description><![CDATA[<p>Man kann das zwar auch ziemlich gut direkt mit den klassischen Mitteln lesen, aber das Format scheint mir so dermaßen nach einem regulären Ausdruck zu schreien, dass ich die klassische Lösung mal lieber nicht vormache, sondern auf jemanden warte, der sich mit Regex auskennt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407254</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 06 Jul 2014 16:51:38 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Sun, 06 Jul 2014 16:56:36 GMT]]></title><description><![CDATA[<p>Was versteht man denn unter klassischen Mitteln?<br />
Furble Wurble hat mir eigentlich schon gut geholfen. Bloß muss ich jetzt irgendwie das s1e1 in die 2 shorts bekommen. Bloß wie erkenne ich denn jetzt am besten eine Zahl?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407255</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Sun, 06 Jul 2014 16:56:36 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Sun, 06 Jul 2014 17:32:26 GMT]]></title><description><![CDATA[<p>Pringles schrieb:</p>
<blockquote>
<p>Was versteht man denn unter klassischen Mitteln?<br />
Furble Wurble hat mir eigentlich schon gut geholfen.</p>
</blockquote>
<p>Eben das, was Furble Wurble meinte.</p>
<blockquote>
<p>Bloß muss ich jetzt irgendwie das s1e1 in die 2 shorts bekommen. Bloß wie erkenne ich denn jetzt am besten eine Zahl?</p>
</blockquote>
<p>Dann hast du nicht verstanden, was Furble Wurble meinte. Du sollst deine Daten direkt einlesen, nicht händisch irgendwelche Strings zerlegen. Die Streams bieten doch schon tolle Lesefunktionen für allerlei Datendarstellungen an. Daraus bastelst du dir ein paar schicke Funktionen, die du zu größeren Funktionen zusammen setzt, die du zu noch größeren Funktionen zusammen setzt, die dann letztendlich eine Lesefunktion für dein Gesamtobjekt ergeben (die du dann üblicherweise &quot;operator&gt;&gt;&quot; nennst, damit du so etwas wie <code>cin &gt;&gt; meine_serie</code> schreiben kannst<sup>*</sup>)<br />
Hier böten sich an:<br />
-Funktionstemplate, welches einen Buchstaben liest und mit einer Vorgabe vergleicht. Schlägt der Vergleich fehl, wird ein Fehlerflag gesetzt. Hier am besten noch mit expliziter Nichtbeachtung von Groß- und Kleinschreibung.<br />
-Einlesen von short gibt's ja schon.<br />
-Damit dann Einlesen der Staffelinformation: Lese_und_prüfe&lt;E&gt;; Lese short -&gt; Staffel; Lese_und_prüfe&lt;S&gt;; Lese short -&gt; Episode</p>
<p>Ich kann's gerade leider nicht vormachen, da der Rechner an dem ich sitze nicht für Entwicklung ausgerüstet ist und remote oder bei ideone ist mir das zu fummelig.</p>
<p><sup>*</sup>: Die Bezeichnung &quot;serie&quot; für deine Klasse scheint mir sehr unpassend. Es scheint sich doch um eine einzelne Episode zu handeln. Aber &quot;episode&quot; wäre auch falsch, da es nicht die Episode selbst ist, sondern Information über ihren Titel. Also &quot;titelinformation&quot; oder ähnliches. Und eigentlich programmiert man auch auf englisch, wenn du nicht gerade für eine deutsche Behörde arbeitest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407262</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 06 Jul 2014 17:32:26 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Sun, 06 Jul 2014 17:51:59 GMT]]></title><description><![CDATA[<p>Ok danke.<br />
Bin grade aber noch bei Vererbungen das mit Templates kommt erst später im Buch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Naja das ganze hätte ich ja auch noch in einer Funktion gepackt und das mit überladen von den operator hätte ich auch noch hin bekommen. Bloß muss ich ja trotzdem das Format s1e1 erkenne.<br />
Ich hätte das ganze jetzt so gelöst:<br />
1. Suche nach Buchstaben s<br />
2. Überprüfe ob das Zeichen nach es eine Zahl ist mit isdigit<br />
3. Überprüfe ob das Zeichen nach der Zahl ein e ist<br />
4. Überprüfe ob das Zeichen nach dem e eine Zahl ist<br />
Falls Punkt 2-4 nicht erfüllt sind wird Punkt 1 wiederholt das ganze bis die Zeile leer ist.<br />
Bloß geht das bestimmt besser aber wie?</p>
<p>Zu dem Namen der Klasse bzw. des Ziels des Programmes. Das Programm soll aus der Datei erkennen bei welcher Serie ich wie weit bin. Also soll das Programm erkennen bei Game of Thrones bin ich in der 3 Staffel in der 6 Episode. Die Serien die nicht mehr weiter Produziert werden sind halt mit /final makiert.<br />
Das mit den Englischen besser ich nach <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="😃"
    /> War halt nur schnell geschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407265</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Sun, 06 Jul 2014 17:51:59 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Mon, 07 Jul 2014 09:24:04 GMT]]></title><description><![CDATA[<blockquote>
<p>Man kann das zwar auch ziemlich gut direkt mit den klassischen Mitteln lesen, aber das Format scheint mir so dermaßen nach einem regulären Ausdruck zu schreien, dass ich die klassische Lösung mal lieber nicht vormache, sondern auf jemanden warte, der sich mit Regex auskennt.</p>
</blockquote>
<p>Ich kenne mich natürlich kein bisschen mit Regex aus, aber einen Versuch habe ich gestartet - er versagt allerdings beim allerletzten Fall, wenn kein Leerzeichen nach dem Namen vorhanden ist... genauso versagt er, wenn ein Leerzeichen zwischen Episodeninformation oder /final und dem Semikolon vorhanden ist. Sicher kann das jemand korrigieren, der sich auskennt.</p>
<pre><code>#include &lt;string&gt;
#include &lt;algorithm&gt;
#include &lt;regex&gt;

#include &lt;ostream&gt;
#include &lt;istream&gt;

class serie
{
public:
	serie( std::string const&amp; name_ = &quot;dummy&quot;,
	       unsigned short staffel_ = 0,
	       unsigned short episode_ = 0,
	       bool final_ = false) :
	  name_(name_), staffel_(staffel_), episode_(episode_), final_(final_){} //ist es ok das die Parameter und die Memeber den selben Namen haben?

	std::string const&amp; name() const { return name_; }
	unsigned short staffel() const { return staffel_; }
	unsigned short episode() const { return episode_; }
	bool final() const { return final_; }

private:
	std::string name_;
	unsigned short staffel_, episode_;
	bool final_;

	friend std::istream&amp; operator&gt;&gt;( std::istream&amp; is, serie&amp; s )
	{
		std::string str;
		if (!std::getline(is &gt;&gt; std::ws, str, ';'))
			return is;

		static const std::regex reg(&quot;(.+) +(s([0-9]+)e([0-9]+))? *(/final)?&quot;);
		std::smatch match;
		if (std::regex_match(str, match, reg))
		{
			s.name_ = match[1];

			if( match[2].matched )
			{
				s.staffel_ = std::stol(match[3]);
				s.episode_ = std::stol(match[4]);
			}
			else
				s.staffel_ = s.episode_ = 0;

			s.final_ = match[5].matched;
		}
		else
			is.setstate( std::ios_base::failbit );

		return is;
	}
};

#include &lt;sstream&gt;
#include &lt;iostream&gt;

int main()
{
	std::istringstream stream(
R&quot;(game of throne s4e6;
walking dead s4e16/final;
criminal minds s9e19;
breaking bad s5e16/final;
prison break s4e24;
Homeland ;)&quot;
);
	serie s;
	while (stream &gt;&gt; s)
		std::cout &lt;&lt; &quot;Name: &quot; &lt;&lt; s.name() &lt;&lt; '\n'
		          &lt;&lt; &quot;\tStaffel: &quot; &lt;&lt; s.staffel() &lt;&lt; (s.final()? &quot; (die letzte!)&quot; : &quot;&quot;) &lt;&lt; '\n'
		          &lt;&lt; &quot;\tEpisode: &quot; &lt;&lt; s.episode() &lt;&lt; '\n';
}
</code></pre>
<p>Edit: Das Problem ist, dass der Ausdruck <code>(.+)</code> gerne auf den ganzen String gematcht wird statt nur auf den Namen. Wie kann man diesen eingrenzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407346</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 07 Jul 2014 09:24:04 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Mon, 07 Jul 2014 14:28:24 GMT]]></title><description><![CDATA[<p>@Arcoth<br />
Welchen Compiler nutzt du? Bei mir bekomme ich ein Laufzeitfehler:</p>
<pre><code>This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
terminate called after throwing an instance of 'std::regex_error'
  what():  regex_error
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2407418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407418</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Mon, 07 Jul 2014 14:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Mon, 07 Jul 2014 14:56:24 GMT]]></title><description><![CDATA[<p>Pringles schrieb:</p>
<blockquote>
<p>@Arcoth<br />
Welchen Compiler nutzt du? Bei mir bekomme ich ein Laufzeitfehler:</p>
<pre><code>This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
terminate called after throwing an instance of 'std::regex_error'
  what():  regex_error
</code></pre>
</blockquote>
<p>Kann sein, dass der Compiler das einfach nicht supported?<br />
Du nutzt den GCC oder? Der unterstützt das AFAIK ab 4.8.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407426</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 07 Jul 2014 14:56:24 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Mon, 07 Jul 2014 15:49:33 GMT]]></title><description><![CDATA[<p>Ja ist hab so ein &quot;MinGW Installer&quot; mit dem ich das irgendwie installiert hab.<br />
Hat jemand ein Link zu ner Anleitung wie ich GCC 4.8 bekomme. Hab damals einfach auf paar Button gedrückt und irgendwann hat das dann compiliert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407436</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Mon, 07 Jul 2014 15:49:33 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Mon, 07 Jul 2014 16:08:03 GMT]]></title><description><![CDATA[<p>Pringles schrieb:</p>
<blockquote>
<p>Ja ist hab so ein &quot;MinGW Installer&quot; mit dem ich das irgendwie installiert hab.<br />
Hat jemand ein Link zu ner Anleitung wie ich GCC 4.8 bekomme. Hab damals einfach auf paar Button gedrückt und irgendwann hat das dann compiliert...</p>
</blockquote>
<p>Du solltest den Installer nochmal neu runterladen und ausführen. Die aktuellste Version von MinGW ist 4.8.1-4</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407440</guid><dc:creator><![CDATA[oenone]]></dc:creator><pubDate>Mon, 07 Jul 2014 16:08:03 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Mon, 07 Jul 2014 16:37:20 GMT]]></title><description><![CDATA[<p>Ich hab da ja ganz viele &quot;Package&quot;. Eins davon ist mingw32-gcc-g++ in der Version 4.8.1-4.<br />
Woran kann das jetzt liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407445</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Mon, 07 Jul 2014 16:37:20 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Mon, 07 Jul 2014 17:02:38 GMT]]></title><description><![CDATA[<p>Pringles schrieb:</p>
<blockquote>
<p>Ich hab da ja ganz viele &quot;Package&quot;. Eins davon ist mingw32-gcc-g++ in der Version 4.8.1-4.<br />
Woran kann das jetzt liegen?</p>
</blockquote>
<p>Das bedeutet, du hast schon die aktuelle Version. Wenn du auf der Konsole <code>g++ --version</code> eingibst, sollte auch 4.8.1-4 kommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407450</guid><dc:creator><![CDATA[oenone]]></dc:creator><pubDate>Mon, 07 Jul 2014 17:02:38 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Mon, 07 Jul 2014 17:06:47 GMT]]></title><description><![CDATA[<p>Hab ich mir auch so gedacht.<br />
Es kommt 4.8.1 also ohne -4 ist das schlimm?<br />
Heißt das jetzt das gcc mit Version 4.8.1 das immer noch nicht unterstützt?<br />
Wenn ja welche Compiler alternativen gibt es?<br />
Wenn nein was ist falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407451</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Mon, 07 Jul 2014 17:06:47 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Mon, 07 Jul 2014 18:03:15 GMT]]></title><description><![CDATA[<p>Mit meinem MinGW32 bekomme ich Fehler bei std::stol, das ist aber ein bekannter Bug. Wenn ich das ersetze, bekomme ich auch den Laufzeitfehler.</p>
<p>Mit meinem MinGW-w64 (gcc 4.9.0) kompiliert und läuft es einwandfrei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407464</guid><dc:creator><![CDATA[oenone]]></dc:creator><pubDate>Mon, 07 Jul 2014 18:03:15 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Mon, 07 Jul 2014 18:46:56 GMT]]></title><description><![CDATA[<p>Vielen Dank. Läuft nun alles.<br />
Werde mir regex mal genauer anschauen.<br />
Ist das mit Absicht das die main kein return hat? Muss ich das verstehen bzw. ist das erst &quot;später&quot; wichtig/Interessant?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407470</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Mon, 07 Jul 2014 18:46:56 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Mon, 07 Jul 2014 18:52:38 GMT]]></title><description><![CDATA[<p>Pringles schrieb:</p>
<blockquote>
<p>Ist das mit Absicht das die main kein return hat? Muss ich das verstehen bzw. ist das erst &quot;später&quot; wichtig/Interessant?</p>
</blockquote>
<p>return 0 in main (und zwar nur in main!) ist überflüssig, weil implizit eingefügt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407473</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 07 Jul 2014 18:52:38 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Tue, 08 Jul 2014 16:11:11 GMT]]></title><description><![CDATA[<p>Ok verstehe.<br />
Ich hab das jetzt hinbekommen das es funktioniert. Würde mich Interessieren ob ich eventuellen schwächen findet.</p>
<pre><code>std::istream&amp; operator&gt;&gt;( std::istream&amp; is, serie&amp; s )
{ 
	std::string str; 
	if (!std::getline(is &gt;&gt; std::ws, str, ';')) 
		return is; 

	static const std::regex reg(&quot;(s&lsqb;&lsqb;:space:&rsqb;&rsqb;*([0-9]+)&lsqb;&lsqb;:space:&rsqb;&rsqb;*e&lsqb;&lsqb;:space:&rsqb;&rsqb;*([0-9]+)*&lsqb;&lsqb;:space:&rsqb;&rsqb;*)(&lsqb;&lsqb;:space:&rsqb;&rsqb;*/&lsqb;&lsqb;:space:&rsqb;&rsqb;*final)*&quot;); 
	std::smatch match; 
	if (std::regex_search(str, match, reg)) 
	{ 
		s.name_ = match.prefix();
		s.staffel_ = std::stol(match[2]); 
		s.episode_ = std::stol(match[3]); 

		s.final_ = match[4].matched; 
	} 
	else
	{
		s.name_ = str;
		s.staffel_ = s.episode_ = 0;
		s.final_ = 0;
	}

	return is; 
}
</code></pre>
<p>Restliche Code ist gleich.<br />
Mit Ausnahme das staffel jetzt episode heißst <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/2407618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407618</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Tue, 08 Jul 2014 16:11:11 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Tue, 08 Jul 2014 16:14:10 GMT]]></title><description><![CDATA[<blockquote>
<p>Würde mich Interessieren ob ich eventuellen schwächen findet.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /></p>
<pre><code>Würde mich freuen wenn ihr schaut ob es Fehler gibt bzw was ihr anders/besser machen würdet.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2407619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407619</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Tue, 08 Jul 2014 16:14:10 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Tue, 08 Jul 2014 16:36:38 GMT]]></title><description><![CDATA[<p>Ich hätte den Regex so gemacht:</p>
<pre><code class="language-cpp">if (!std::getline(is, str, ';')) // der Regex kümmert sich um Leerzeichen drum rum
      return is;

    // \d: [0-9], \s: &lsqb;&lsqb;:space:&rsqb;&rsqb;, +?: Non-greedy matching, ^ und $: alles anschauen, keinen Substring suchen
    static const std::regex reg(R&quot;(^\s*(.+?)(\s+s(\d+)e(\d+))?(\s*/final)?\s*$)&quot;);
    std::smatch match;
    if (!std::regex_match(str, match, reg))
      assert(false); // always matches
</code></pre>
<p>Dein Regex schlägt fehl bei z.B. &quot;prison s4e24 break s4e24;&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407630</guid><dc:creator><![CDATA[greg&#x27;s ex]]></dc:creator><pubDate>Tue, 08 Jul 2014 16:36:38 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Tue, 08 Jul 2014 16:37:26 GMT]]></title><description><![CDATA[<p>Hier noch der Rest vom Code:</p>
<pre><code class="language-cpp">s.name_ = match[1];

    if (match[2].matched) {
      s.staffel_ = std::stol(match[3]);
      s.episode_ = std::stol(match[4]);
    } else {
      s.staffel_ = s.episode_ = 0;
    }
    s.final_ = match[5].matched;

    return is;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2407631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407631</guid><dc:creator><![CDATA[greg&#x27;s ex]]></dc:creator><pubDate>Tue, 08 Jul 2014 16:37:26 GMT</pubDate></item><item><title><![CDATA[Reply to Vectoren sortieren, Zahlen erkennen on Tue, 08 Jul 2014 17:29:47 GMT]]></title><description><![CDATA[<p>Geht bei mir gar nicht.<br />
Er findet die Namen der Serien nicht. Außerdem verstehe ich dein Regex nicht wirklich &quot;(^\s*(.+?)&quot; was macht das?<br />
Was bewirkt das Doller Zeichen?<br />
Mit den assert bekomme ich ein Laufzeit Fehler:</p>
<pre><code>File: main.cpp, Line 41

Expression: false
</code></pre>
<p>Line 41:</p>
<pre><code>assert(false); // always matches
</code></pre>
<blockquote>
<p>&quot;prison s4e24 break s4e24;&quot;</p>
</blockquote>
<p>So ein Format sollte nicht vorkommen.</p>
<blockquote>
<p>if (!std::getline(is, str, ';')) // der Regex kümmert sich um Leerzeichen drum rum</p>
</blockquote>
<p>Hab vergessen zu sagen das nach den ';' Kommentare kommen.</p>
<p>Trotzdem Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2407646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2407646</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Tue, 08 Jul 2014 17:29:47 GMT</pubDate></item></channel></rss>