<?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[Subscript Fehler]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe mal wieder ein Problem. Ich habe ein Programm geschrieben dass mir ein Textfile zeilenweise in einen Stringvektor einliest.</p>
<p>Währenddessen sollen Signalwörter gefunden werden, was auch klappt. Nun will ich einen Substring ausschneiden, was auch noch klappt. Wenn ich diesen Substring namens sub jedoch in einen Stringvektor wie schon weiter oben im Prog schreiben will, kommt bei erfolgreichen Kompilieren und Starten des Programms der Fehler: &quot;vector subscript out of range&quot;</p>
<p>Wie kann ich das Problem lösen?</p>
<p>Hier ist das Programm:</p>
<pre><code class="language-cpp">#include&lt;string&gt;
#include&lt;fstream&gt;
#include&lt;iostream&gt;
#include&lt;vector&gt;
#include&lt;string&gt;

using namespace std;

int main() 
{
	vector&lt;string&gt;stringvec;            // Stringvektor, schreibt Scicos-Zeilen in Vektor
	ifstream file;							// Eingabestrom 
    string filename;						// damit der Quelldateiname als String eingelesen werden kann

	cout &lt;&lt; &quot;Quelldatei? &quot;;					// Ausgabe
    cin &gt;&gt; filename;						// Datei mit Pfad eingeben

    file.open(filename.c_str(), ios::binary|ios::in);	    // Datei oeffnen
														    // Ohne {\tt ios::binary} sind nur Textdateien kopierbar
	if (!file)								// Fehlerüberprüfung
	{														
		std::cerr&lt;&lt;filename&lt;&lt; &quot;Datei wurde nicht gefunden!\n&quot;;
	}

	std::string line;						// Definition des Zeilen-Strings
	std::string wordtofind(&quot;exprs&quot;);
	std::string::size_type result=0;

	int z=0;
	int i=1;
	vector&lt;string&gt;wert1;					// Stringvektor, schreibt Verstärkungsfaktor Kp in Vektor
	//vector&lt;string&gt;vecT;					// Stringvektor, schreibt Zeitkonstante T in Vektor

	while(!file.eof()) 
	{ 
		getline(file, line);				// Zeilenweise einlesen
		stringvec.push_back(line);			// push_back: Zeilen werden hintereinander hinzugefuegt 
   		++z;								// Zählt Anzahl der Zeilen mit

		if (result=line.find(wordtofind,result) !=string::npos)
		{
			std::cout&lt;&lt;line&lt;&lt;std::endl;		// Ausgabe der wordtofind-Zeilen
			++result;						// Ab der nächsten Stelle suchen
			cout&lt;&lt;&quot;Zeile: &quot;&lt;&lt;z&lt;&lt;endl;
			string sub=line.substr(35);
			wert1[i]=sub;
			cout&lt;&lt;sub&lt;&lt;endl;
			++i;
		}

	}

	cout&lt;&lt;&quot;Anzahl der Zeilen: &quot;&lt;&lt;z&lt;&lt;endl;	// Ueberpruefung
	cout&lt;&lt;stringvec[38]&lt;&lt;endl;				// Ueberpruefung

	int halt;
	cin&gt;&gt;halt;									// Alibi-Anhalten des Programms

	return 0;
}
</code></pre>
<p>//Edit: CodeTags</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/258161/subscript-fehler</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 11:28:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258161.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Jan 2010 10:45:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Subscript Fehler on Thu, 07 Jan 2010 11:41:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe mal wieder ein Problem. Ich habe ein Programm geschrieben dass mir ein Textfile zeilenweise in einen Stringvektor einliest.</p>
<p>Währenddessen sollen Signalwörter gefunden werden, was auch klappt. Nun will ich einen Substring ausschneiden, was auch noch klappt. Wenn ich diesen Substring namens sub jedoch in einen Stringvektor wie schon weiter oben im Prog schreiben will, kommt bei erfolgreichen Kompilieren und Starten des Programms der Fehler: &quot;vector subscript out of range&quot;</p>
<p>Wie kann ich das Problem lösen?</p>
<p>Hier ist das Programm:</p>
<pre><code class="language-cpp">#include&lt;string&gt;
#include&lt;fstream&gt;
#include&lt;iostream&gt;
#include&lt;vector&gt;
#include&lt;string&gt;

using namespace std;

int main() 
{
	vector&lt;string&gt;stringvec;            // Stringvektor, schreibt Scicos-Zeilen in Vektor
	ifstream file;							// Eingabestrom 
    string filename;						// damit der Quelldateiname als String eingelesen werden kann

	cout &lt;&lt; &quot;Quelldatei? &quot;;					// Ausgabe
    cin &gt;&gt; filename;						// Datei mit Pfad eingeben

    file.open(filename.c_str(), ios::binary|ios::in);	    // Datei oeffnen
														    // Ohne {\tt ios::binary} sind nur Textdateien kopierbar
	if (!file)								// Fehlerüberprüfung
	{														
		std::cerr&lt;&lt;filename&lt;&lt; &quot;Datei wurde nicht gefunden!\n&quot;;
	}

	std::string line;						// Definition des Zeilen-Strings
	std::string wordtofind(&quot;exprs&quot;);
	std::string::size_type result=0;

	int z=0;
	int i=1;
	vector&lt;string&gt;wert1;					// Stringvektor, schreibt Verstärkungsfaktor Kp in Vektor
	//vector&lt;string&gt;vecT;					// Stringvektor, schreibt Zeitkonstante T in Vektor

	while(!file.eof()) 
	{ 
		getline(file, line);				// Zeilenweise einlesen
		stringvec.push_back(line);			// push_back: Zeilen werden hintereinander hinzugefuegt 
   		++z;								// Zählt Anzahl der Zeilen mit

		if (result=line.find(wordtofind,result) !=string::npos)
		{
			std::cout&lt;&lt;line&lt;&lt;std::endl;		// Ausgabe der wordtofind-Zeilen
			++result;						// Ab der nächsten Stelle suchen
			cout&lt;&lt;&quot;Zeile: &quot;&lt;&lt;z&lt;&lt;endl;
			string sub=line.substr(35);
			wert1[i]=sub;
			cout&lt;&lt;sub&lt;&lt;endl;
			++i;
		}

	}

	cout&lt;&lt;&quot;Anzahl der Zeilen: &quot;&lt;&lt;z&lt;&lt;endl;	// Ueberpruefung
	cout&lt;&lt;stringvec[38]&lt;&lt;endl;				// Ueberpruefung

	int halt;
	cin&gt;&gt;halt;									// Alibi-Anhalten des Programms

	return 0;
}
</code></pre>
<p>//Edit: CodeTags</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1834208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1834208</guid><dc:creator><![CDATA[MichiBb]]></dc:creator><pubDate>Thu, 07 Jan 2010 11:41:33 GMT</pubDate></item><item><title><![CDATA[Reply to Subscript Fehler on Thu, 07 Jan 2010 10:49:09 GMT]]></title><description><![CDATA[<p>Du kannst nicht einfach mit vec[3] = &quot;...&quot;; in einen Vektor schreiben. Der hat ja eine variable Größe, angefangen mit der Größe 0.</p>
<p>Daher entweder mit resize (oder beim Erstellen) eine Größe mitgeben oder mit push_back(...) Elemente anhängen. Falls die Größe vorher bekannt ist, kann vorher mit einem reserve(...) Platz reserviert werden, was unnötiges (internes) Herumkopiere erspart.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1834211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1834211</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 07 Jan 2010 10:49:09 GMT</pubDate></item><item><title><![CDATA[Reply to Subscript Fehler on Thu, 07 Jan 2010 10:49:27 GMT]]></title><description><![CDATA[<p>wert1 ist (und bleibt) ein leerer Vektor, weil du nie etwas anhängst oder einfügst. Der []-Operator sorgt jedenfalls nicht für ein automatisches Anlegen des referenzierten Elements.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1834212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1834212</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 07 Jan 2010 10:49:27 GMT</pubDate></item><item><title><![CDATA[Reply to Subscript Fehler on Thu, 07 Jan 2010 11:11:02 GMT]]></title><description><![CDATA[<p>Ah ok danke. Aber wenn ichs so verbessere, kmpiliert ers mir gar nicht erst:</p>
<p>...<br />
while(!file.eof())<br />
{<br />
getline(file, line); // Zeilenweise einlesen<br />
stringvec.push_back(line); // push_back: Zeilen werden hintereinander hinzugefuegt<br />
++z; // Zählt Anzahl der Zeilen mit</p>
<p>if (result=line.find(wordtofind,result) !=string::npos)<br />
{<br />
std::cout&lt;&lt;line&lt;&lt;std::endl; // Ausgabe der wordtofind-Zeilen<br />
++result; // Ab der nächsten Stelle suchen<br />
cout&lt;&lt;&quot;Zeile: &quot;&lt;&lt;z&lt;&lt;endl;<br />
string sub=line.substr(35);<br />
wert1.pushback(sub);<br />
cout&lt;&lt;sub&lt;&lt;endl;<br />
++i;<br />
}<br />
...</p>
<p>Versteh ich nicht..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1834232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1834232</guid><dc:creator><![CDATA[MichiBb]]></dc:creator><pubDate>Thu, 07 Jan 2010 11:11:02 GMT</pubDate></item><item><title><![CDATA[Reply to Subscript Fehler on Thu, 07 Jan 2010 11:12:20 GMT]]></title><description><![CDATA[<p>Es heißt ja auch push_back und nicht pushback. Ein wenig mehr Sorgfalt sollte schon sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1834233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1834233</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 07 Jan 2010 11:12:20 GMT</pubDate></item><item><title><![CDATA[Reply to Subscript Fehler on Thu, 07 Jan 2010 11:16:49 GMT]]></title><description><![CDATA[<p>Ok peinlich....<br />
hab push_back falsch geschrieben. jetzt gehts. Danke an alle!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1834237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1834237</guid><dc:creator><![CDATA[MichiBb]]></dc:creator><pubDate>Thu, 07 Jan 2010 11:16:49 GMT</pubDate></item></channel></rss>