<?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[String im string suchen]]></title><description><![CDATA[<p>Hi,<br />
ich komm mal wieder nicht weiter.<br />
Ich will ein Programm haben dass einen Text mit getline durchsucht und jede zeile in einen stringvektor schreibt. so weit so gut.<br />
Jetzt möchte ich in der schleife noch einen befehl drin haben der jede zeile (als string) auf einen substring durchsucht, nämlich nach dem wort &quot;exprs&quot; und mir die zeile (variable z) angibt.</p>
<p>Aber irgendwas stimmt mit dem befehl strstr() nicht, brauch ich einen anderen?<br />
Danke Michi</p>
<p>#include&lt;string&gt;<br />
#include&lt;fstream&gt;<br />
#include&lt;iostream&gt;<br />
#include&lt;vector&gt;<br />
#include&lt;string&gt;</p>
<p>using namespace std;</p>
<p>int main()<br />
{<br />
vector&lt;string&gt;stringvec; // Stringvektor<br />
ifstream file; // Eingabestrom<br />
string filename; // Quelldateiname-string<br />
cout &lt;&lt; &quot;Quelldatei? &quot;; // Ausgabe<br />
cin &gt;&gt; filename; // eingeben</p>
<p>file.open(filename.c_str(), ios::binary|ios::in); // Datei oeffnen<br />
// Ohne {\tt ios::binary} sind nur Textdateien kopierbar<br />
if (!file) // Fehlerüberprüfung<br />
{<br />
cerr &lt;&lt; filename<br />
&lt;&lt; &quot;Datei wurde nicht gefunden!\n&quot;;<br />
}</p>
<p>std::string line; // Definition des Zeilen-Strings<br />
int z=1;<br />
while(!file.eof())<br />
{<br />
getline(file, line); // Zeilenweise einlesen<br />
stringvec.push_back(line); // push_back: Zeilen werden hintereinander hinzugefuegt<br />
std::cout&lt;&lt;line&lt;&lt;std::endl; // Ausgabe der Zeilen nacheinander<br />
++z;</p>
<p>string exprs; // Filtern von exprs</p>
<p>char *strstr(const char *stringvec[z], const char *exprs); // Fehler bei Suche von String im string</p>
<p>}</p>
<p>cout&lt;&lt;&quot;Anzahl der Zeilen: &quot;&lt;&lt;z&lt;&lt;endl; // Ueberpruefung<br />
cout&lt;&lt;stringvec[50]&lt;&lt;endl; // Ueberpruefung</p>
<p>int i;<br />
cin&gt;&gt;i; // Alibi-Anhalten des Programms</p>
<p>return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257303/string-im-string-suchen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 08:08:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257303.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Dec 2009 15:47:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 15:47:51 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich komm mal wieder nicht weiter.<br />
Ich will ein Programm haben dass einen Text mit getline durchsucht und jede zeile in einen stringvektor schreibt. so weit so gut.<br />
Jetzt möchte ich in der schleife noch einen befehl drin haben der jede zeile (als string) auf einen substring durchsucht, nämlich nach dem wort &quot;exprs&quot; und mir die zeile (variable z) angibt.</p>
<p>Aber irgendwas stimmt mit dem befehl strstr() nicht, brauch ich einen anderen?<br />
Danke Michi</p>
<p>#include&lt;string&gt;<br />
#include&lt;fstream&gt;<br />
#include&lt;iostream&gt;<br />
#include&lt;vector&gt;<br />
#include&lt;string&gt;</p>
<p>using namespace std;</p>
<p>int main()<br />
{<br />
vector&lt;string&gt;stringvec; // Stringvektor<br />
ifstream file; // Eingabestrom<br />
string filename; // Quelldateiname-string<br />
cout &lt;&lt; &quot;Quelldatei? &quot;; // Ausgabe<br />
cin &gt;&gt; filename; // eingeben</p>
<p>file.open(filename.c_str(), ios::binary|ios::in); // Datei oeffnen<br />
// Ohne {\tt ios::binary} sind nur Textdateien kopierbar<br />
if (!file) // Fehlerüberprüfung<br />
{<br />
cerr &lt;&lt; filename<br />
&lt;&lt; &quot;Datei wurde nicht gefunden!\n&quot;;<br />
}</p>
<p>std::string line; // Definition des Zeilen-Strings<br />
int z=1;<br />
while(!file.eof())<br />
{<br />
getline(file, line); // Zeilenweise einlesen<br />
stringvec.push_back(line); // push_back: Zeilen werden hintereinander hinzugefuegt<br />
std::cout&lt;&lt;line&lt;&lt;std::endl; // Ausgabe der Zeilen nacheinander<br />
++z;</p>
<p>string exprs; // Filtern von exprs</p>
<p>char *strstr(const char *stringvec[z], const char *exprs); // Fehler bei Suche von String im string</p>
<p>}</p>
<p>cout&lt;&lt;&quot;Anzahl der Zeilen: &quot;&lt;&lt;z&lt;&lt;endl; // Ueberpruefung<br />
cout&lt;&lt;stringvec[50]&lt;&lt;endl; // Ueberpruefung</p>
<p>int i;<br />
cin&gt;&gt;i; // Alibi-Anhalten des Programms</p>
<p>return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828049</guid><dc:creator><![CDATA[MichiBbbb]]></dc:creator><pubDate>Sat, 26 Dec 2009 15:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 16:22:21 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">string exprs;					// Filtern von exprs

	char *strstr(const char *stringvec[z], const char *exprs);	// Fehler bei Suche von String im string
</code></pre>
<p>Sieht irgendwie aus, als ob du das irgendwo im Internet gefunden hättest und einfach mal eingefügt und kompiliert hast. strstr benutzt man eigentlich für C-Strings. Für die Klasse string gibt es eine eigene Funktion <a href="http://www.cppreference.com/wiki/string/find" rel="nofollow">http://www.cppreference.com/wiki/string/find</a> um einen Teilstring zu suchen, benutz besser die. Auf der von mir verlinkten Seite ist auch ein Beispiel zur Benutzung, wenn dir das nicht hilft, dann hilft Google und wenn du dann immer noch Probleme hast, dann kannst du ja hier wieder fragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828056</guid><dc:creator><![CDATA[OhneName]]></dc:creator><pubDate>Sat, 26 Dec 2009 16:22:21 GMT</pubDate></item><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 16:25:56 GMT]]></title><description><![CDATA[<p>Ja stimmt. Ich weiß ehrlich gesagt auch nicht was der Unterschied zwischen c-Strings und strings ist.<br />
Ich wüsste halt gerne welchen befehl ich brauch ob compare oder was auch immer... da gibts ja doch ne ganze latte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828058</guid><dc:creator><![CDATA[MichiBbbb]]></dc:creator><pubDate>Sat, 26 Dec 2009 16:25:56 GMT</pubDate></item><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 16:37:27 GMT]]></title><description><![CDATA[<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; wtf alter!? 

// using namespace std; ich würde es lieber lassen...

int main() 
{
	std::vector&lt;string&gt;stringvec;	 
	std::ifstream file;	 
	std::string filename;	

	std::cout &lt;&lt; &quot;Quelldatei? &quot;;	 
	std::cin &gt;&gt; filename;	  

	file.open(filename.c_str(), ios::binary | ios::in);	

	if (!file)	
	{	
		std::cerr &lt;&lt; filename &lt;&lt; &quot;Datei wurde nicht gefunden!\n&quot;; 
	} 

	std::string line;
	std::string WordToFind(&quot;H&quot;);
	std::string::size_type result;

	while(!file.eof()) 
	{ 
		getline(file, line);	
		stringvec.push_back(line);	
		std::cout&lt;&lt; line &lt;&lt;std::endl;	

		result = line.find(WordToFind, 0);
	} 

	return 0; 
}
</code></pre>
<p>Die Kommentare waren Quatsch. Und was du mit:</p>
<pre><code class="language-cpp">char *strstr(const char *stringvec[z], const char *exprs);	// Fehler bei Suche von String im string
</code></pre>
<p>vor hattest weiß ich auch nicht...</p>
<p>!Vorsicht - Code ungetestet! :xmas1: :xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828061</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sat, 26 Dec 2009 16:37:27 GMT</pubDate></item><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 16:36:52 GMT]]></title><description><![CDATA[<p>Kurz:<br />
C-Strings sind Arrays vom Typ char[] bzw. Zeiger vom Type char* die auf den Anfang eines Speicherbereichs zeigen, an dem mehrere solche Variablen vom Typ char liegen. Das Zeichen '\0' markiert dabei das Ende der Zeichenkette.<br />
string ist eine Klasse aus der C++-Standardbibliothekt, die so einen C-String kapselt und eine deutlich einfachere Verwendung ermöglicht. Die solltest du als Anfänger erstmal verwenden. Später kannst du dich dann auch mal mit den C-Strings auseinandersetzen, deren Verwendung nicht ganz so einfach ist.</p>
<p>Lang:<br />
<a href="http://www.cpp-tutor.de/cpp/le06/felder.html#cstring" rel="nofollow">http://www.cpp-tutor.de/cpp/le06/felder.html#cstring</a><br />
<a href="http://www.cpp-tutor.de/cpp/le06/string.html" rel="nofollow">http://www.cpp-tutor.de/cpp/le06/string.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828069</guid><dc:creator><![CDATA[OhneName]]></dc:creator><pubDate>Sat, 26 Dec 2009 16:36:52 GMT</pubDate></item><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 16:52:27 GMT]]></title><description><![CDATA[<p>Oh ok, wenn das c für charakter steht war ich ein wenig falsch gewickelt...<br />
Vielen Dank für die Antworten!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828074</guid><dc:creator><![CDATA[MichiBbbb]]></dc:creator><pubDate>Sat, 26 Dec 2009 16:52:27 GMT</pubDate></item><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 17:15:58 GMT]]></title><description><![CDATA[<p>Jetzt muss ich nochmal nachfragen, was bedeutet denn das &quot;H&quot; in der Zeile:<br />
std::string WordToFind(&quot;H&quot;);</p>
<p>und was passiert bei dem</p>
<p>result=line.find(Wordtofind,0)</p>
<p>weil bei mir passiert leider nix, auch nicht wenn ich danach</p>
<p>cout&lt;&lt;result;</p>
<p>mach. Und ich habe einige Wordtofind im Text....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828092</guid><dc:creator><![CDATA[MichiBbbb]]></dc:creator><pubDate>Sat, 26 Dec 2009 17:15:58 GMT</pubDate></item><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 17:18:45 GMT]]></title><description><![CDATA[<p>MichiBbbb schrieb:</p>
<blockquote>
<p>Oh ok, wenn das c für charakter steht war ich ein wenig falsch gewickelt...<br />
Vielen Dank für die Antworten!!</p>
</blockquote>
<p>Das C im Name der C-Strings steht schon für die Sprache C. Diese Art der Repräsentation von Zeichenketten ist nämlich ganz typisch für C, keine (bzw. kaum eine) andere Sprache macht das so anfängerunfreundlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828093</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 26 Dec 2009 17:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 17:21:46 GMT]]></title><description><![CDATA[<p>MichiBbbb schrieb:</p>
<blockquote>
<p>Jetzt muss ich nochmal nachfragen, was bedeutet denn das &quot;H&quot; in der Zeile:<br />
std::string WordToFind(&quot;H&quot;);</p>
<p>und was passiert bei dem</p>
<p>result=line.find(Wordtofind,0)</p>
<p>weil bei mir passiert leider nix, auch nicht wenn ich danach</p>
<p>cout&lt;&lt;result;</p>
<p>mach. Und ich habe einige Wordtofind im Text....</p>
</blockquote>
<p>Dann zeig mal etwas mehr Code.</p>
<p>Das H ist nur ein Beispiel für ein Suchwort. Da kann auch I stehen. Oder Hallo.</p>
<p>Das find sollte dir die Position des ersten H in line zurückgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828097</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 26 Dec 2009 17:21:46 GMT</pubDate></item><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 17:25:11 GMT]]></title><description><![CDATA[<p>MichiBbbb schrieb:</p>
<blockquote>
<p>Jetzt muss ich nochmal nachfragen, was bedeutet denn das &quot;H&quot; in der Zeile:<br />
std::string WordToFind(&quot;H&quot;);</p>
</blockquote>
<p>So langsam hab ich das Gefühl bei dir fehlen ziemliche viele Grundlagen. Hier legst du ein Objekt der Klasse string mit dem Namen WordToFind an und initialisierst es mit der Zeichenkette &quot;H&quot; (die Klasse string verwaltet Zeichenketten, wobei du das eigentlich wissen solltest)</p>
<blockquote>
<p>und was passiert bei dem</p>
<p>result=line.find(Wordtofind,0)</p>
</blockquote>
<p>Hier wird der string mit dem Namen line nach der Zeichenkette durchsucht, die in der Variable WordToFind gespeichert ist. D.h. die Zeichenkette &quot;H&quot; wird gesucht und die Position an der das erste H vorkommt in der Variablen mit dem Namen result gespeichert.</p>
<blockquote>
<p>weil bei mir passiert leider nix, auch nicht wenn ich danach</p>
<p>cout&lt;&lt;result;</p>
<p>mach. Und ich habe einige Wordtofind im Text....</p>
</blockquote>
<p>Es wird ja auch nicht nach &quot;WordToFind&quot; gesucht sondern nach &quot;H&quot;. Ist dir das klar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828100</guid><dc:creator><![CDATA[OhneName]]></dc:creator><pubDate>Sat, 26 Dec 2009 17:25:11 GMT</pubDate></item><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 17:32:40 GMT]]></title><description><![CDATA[<p>Mir ist leider die ganze Sache nicht komplett klar.<br />
Ich bin Maschinenbaustudent und hatte 1 semester c-grundlagen (im wahrsten Sinne des Wortes...) und schreib jetzt blöderweise eine diplomarbeit bei der ich c++ programmieren soll. Deswegen muss ich mich da jetzt durchhangeln....<br />
Aber so weit so gut, denn wenn ich die benötigten Signalwörter aus den Zeilen finde, dann bin ich schon sehr weit mit meinem Programm.</p>
<p>Ich versuchs nochmal, jetzt hab ichs vielleicht verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828103</guid><dc:creator><![CDATA[MichiBbbb]]></dc:creator><pubDate>Sat, 26 Dec 2009 17:32:40 GMT</pubDate></item><item><title><![CDATA[Reply to String im string suchen on Sat, 26 Dec 2009 17:46:23 GMT]]></title><description><![CDATA[<p>Um mal Klarheit zu schaffen was ich eigentlich haben will: Ich möchte aus meinem ASCII-Text (siehe unten) die Werte nach exprs in Variablen speichern.<br />
Zum einen die 1 und zum anderen das 1+s. (Der Ausschnitt unten stammt aus einem Scilab-Blockdiagramm, das als ASCII abgespeichert wurde)</p>
<p>Mein Plan war alles mit getline in einen Stringvektor zu speichern und dann die einzelnen strings noch nach den Signalwörtern zu untersuchen und die benörtigten Parameter herauszufiltern (da bin ich gerade dabei...). Der Grund das ganze in einen vektor zu schreiben ist, dass ich dann weitere parameter in anderen zeilen direkt über den vektorelementzugriff realisieren kann.</p>
<p>Nur aus irgendeinem Grund macht er keine anstalten exprs zu finden. Kann es sein dass er exprs nicht erkennt weil direkt danach ein = kommt?</p>
<p>ASCII-Text:<br />
scs_m_1.objs(1)=scicos_block(..<br />
gui=&quot;CLR&quot;,..<br />
graphics=scicos_graphics(..<br />
orig=[214.904,209.67733],..<br />
sz=[50,50],..<br />
flip=%t,..<br />
theta=0,..<br />
exprs=[&quot;1&quot;;&quot;1+s&quot;],..<br />
pin=0,..<br />
pout=0,..<br />
pein=[],..<br />
peout=[],..<br />
gr_i=list(..<br />
[&quot;xstringb(orig(1),orig(2),[''num(s)'';''den(s)''],sz(1<br />
),sz(2),''fill'')&quot;;<br />
&quot;xpoly([orig(1)+.1*sz(1),orig(1)+.9*sz(1)],[1,1]*(orig(<br />
2)+sz(2)/2))&quot;],8),..<br />
id=&quot;&quot;,..<br />
in_implicit=&quot;E&quot;,..<br />
out_implicit=&quot;E&quot;),..<br />
model=scicos_model(..<br />
sim=list(&quot;csslti4&quot;,4),..<br />
in=1,..<br />
in2=[],..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828107</guid><dc:creator><![CDATA[MichiBbbb]]></dc:creator><pubDate>Sat, 26 Dec 2009 17:46:23 GMT</pubDate></item></channel></rss>