<?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[char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen)]]></title><description><![CDATA[<p>Hallo leute,</p>
<p>ich habe in einen Programm folgende Methode implementiert:</p>
<pre><code class="language-cpp">void conn::rd(){

 vector&lt;char&gt; buf (128);
 int bytes = recv(sock,&amp;buf[0],buf.size()-1,0);

 if (bytes==-1)
 {
  perror(&quot;Error&quot;)
 }

 cout&lt;&lt;&quot;erhalten&quot;&lt;&lt;&amp;buf[0]&lt;&lt;&quot;\n&quot;;
}
</code></pre>
<p>Wie schon der Titel besagt, möchte ich die lange char kette in einzelne Wörter zerlegen. Ich denke persönlich, dass das viel komplizierter wäre, als ob ich ein char vector in einen string vector konvertiere und dann in wörter zerlege!</p>
<p>Ich habe aber keine AHNUNG bezüglich der konvertierung! Das in wörter zerlegen in string kriege ich schon hin... Bitte hilft mir, bin am verzweifeln <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277415/char-vector-in-wörter-zerlegen-oder-in-string-umwandeln-dann-in-wörter-zerlegen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 21:04:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277415.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Nov 2010 11:52:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Thu, 18 Nov 2010 11:52:07 GMT]]></title><description><![CDATA[<p>Hallo leute,</p>
<p>ich habe in einen Programm folgende Methode implementiert:</p>
<pre><code class="language-cpp">void conn::rd(){

 vector&lt;char&gt; buf (128);
 int bytes = recv(sock,&amp;buf[0],buf.size()-1,0);

 if (bytes==-1)
 {
  perror(&quot;Error&quot;)
 }

 cout&lt;&lt;&quot;erhalten&quot;&lt;&lt;&amp;buf[0]&lt;&lt;&quot;\n&quot;;
}
</code></pre>
<p>Wie schon der Titel besagt, möchte ich die lange char kette in einzelne Wörter zerlegen. Ich denke persönlich, dass das viel komplizierter wäre, als ob ich ein char vector in einen string vector konvertiere und dann in wörter zerlege!</p>
<p>Ich habe aber keine AHNUNG bezüglich der konvertierung! Das in wörter zerlegen in string kriege ich schon hin... Bitte hilft mir, bin am verzweifeln <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982187</guid><dc:creator><![CDATA[Gast 321]]></dc:creator><pubDate>Thu, 18 Nov 2010 11:52:07 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Thu, 18 Nov 2010 12:14:41 GMT]]></title><description><![CDATA[<p>Warum muss es unbedingt char sein. std::string mit den Funktionen find und substr können dies!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982199</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Thu, 18 Nov 2010 12:14:41 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Thu, 18 Nov 2010 12:15:24 GMT]]></title><description><![CDATA[<p>Du kannst den Inhalt in einen string kopieren, wenn Du dafür eine fertige Lösung hast und die Kosten der Kopie ok sind.</p>
<pre><code class="language-cpp">std::string s(buf.begin(), buf.end());
</code></pre>
<p>Du kannst auch etwas wie boost::tokenizer benutzen. Das kann mit jedem Iterator. Oder etwas entsrpechendes selber schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982200</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Thu, 18 Nov 2010 12:15:24 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Thu, 18 Nov 2010 12:41:54 GMT]]></title><description><![CDATA[<p>Ein ketzerischer Vorschlag: Füg am Ende noch eine Null an und benutze dann <a href="http://www.cplusplus.com/reference/clibrary/cstring/strtok/" rel="nofollow">strtok</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982224</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 18 Nov 2010 12:41:54 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Thu, 18 Nov 2010 12:46:34 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Ein ketzerischer Vorschlag: Füg am Ende noch eine Null an und benutze dann <a href="http://www.cplusplus.com/reference/clibrary/cstring/strtok/" rel="nofollow">strtok</a>.</p>
</blockquote>
<p>... und bedenke, dass das nicht mehr funktioniert, wenn das im Multithreading verwendet werden soll. <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="😉"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982227</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 18 Nov 2010 12:46:34 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Thu, 18 Nov 2010 14:26:37 GMT]]></title><description><![CDATA[<p>brotbernd schrieb:</p>
<blockquote>
<p>Du kannst den Inhalt in einen string kopieren, wenn Du dafür eine fertige Lösung hast und die Kosten der Kopie ok sind.</p>
<pre><code class="language-cpp">std::string s(buf.begin(), buf.end());
</code></pre>
<p>Du kannst auch etwas wie boost::tokenizer benutzen. Das kann mit jedem Iterator. Oder etwas entsrpechendes selber schreiben.</p>
</blockquote>
<p>Wohl eher</p>
<pre><code class="language-cpp">std::string s(buf.begin(), buf.begin() + readBytes);
</code></pre>
<p><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/1982301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982301</guid><dc:creator><![CDATA[Dagehtwohlwas]]></dc:creator><pubDate>Thu, 18 Nov 2010 14:26:37 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Thu, 18 Nov 2010 18:43:13 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>... und bedenke, dass das nicht mehr funktioniert, wenn das im Multithreading verwendet werden soll. <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="😉"
    /></p>
</blockquote>
<p>Was aber kein spezifisches Problem von <code>strtok()</code> ist. Die ganze Standardbibiothek ist momentan nicht threadsicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982468</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 18 Nov 2010 18:43:13 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Thu, 18 Nov 2010 19:00:59 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>... und bedenke, dass das nicht mehr funktioniert, wenn das im Multithreading verwendet werden soll. <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="😉"
    /></p>
</blockquote>
<p>Was aber kein spezifisches Problem von <code>strtok()</code> ist. Die ganze Standardbibiothek ist momentan nicht threadsicher.</p>
</blockquote>
<p>Wobei es dann auch wieder manchmal threadsichere Versionen davon gibt. Da muss man dann die Compilerhandbücher für lesen. Ich habe sogar threadsichere Versionen von strtok gefunden (C Runtime von Solaris, also der Sun Compiler).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982485</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 18 Nov 2010 19:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Thu, 18 Nov 2010 19:04:06 GMT]]></title><description><![CDATA[<p>Für sowas gibt es boost::algorithm::split.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982487</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Thu, 18 Nov 2010 19:04:06 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Thu, 18 Nov 2010 19:06:02 GMT]]></title><description><![CDATA[<p>strtok_s() bei MSVS z.B.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982489</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Thu, 18 Nov 2010 19:06:02 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Thu, 18 Nov 2010 20:30:55 GMT]]></title><description><![CDATA[<p>Schau dir mal die stringstreams an:</p>
<pre><code class="language-cpp">istringstream iss (std::string(&amp;buf[0]));
iss &gt;&gt; word[0] &gt;&gt; word[1] &gt;&gt; word[2] &gt;&gt; ...;
</code></pre>
<p>Ist leider relativ langsam (wie der Rest von der C++ iostreamlib).</p>
<p>Das allerletze, was du tun solltest, ist <code>strtok_s()</code> zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982552</guid><dc:creator><![CDATA[istri]]></dc:creator><pubDate>Thu, 18 Nov 2010 20:30:55 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Fri, 19 Nov 2010 06:03:27 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>voerst möchte ich micht für die zahlreichen Antworten und Ideen bedanken!</p>
<p>... Könnt ihr mir das mal mit String in meine Methode einfügen ? (Das Problem besteht, dass ich es gestern auch so versucht habe und nicht funktioniert hat und möchte wissen wie ihr das dan so machtr)...</p>
<p>hier ist nochmal die Methode :</p>
<pre><code class="language-cpp">void conn::rd(){ 

 vector&lt;char&gt; buf (128); 
 int bytes = recv(sock,&amp;buf[0],buf.size()-1,0); 

 if (bytes==-1) 
 { 
  perror(&quot;Error&quot;) 
 } 

 cout&lt;&lt;&quot;erhalten&quot;&lt;&lt;&amp;buf[0]&lt;&lt;&quot;\n&quot;; 
}
</code></pre>
<p>- Ich hatte bezüglich der Wörtertrennung was anderes, was wesentlich aufwendiger ist. Wie funktiniert das genau mit der Methode von euch ?</p>
<p>Vielen Dank für den Super Support in Cplusplus, den ich sonst niergends erhalte!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982648</guid><dc:creator><![CDATA[Gast 123]]></dc:creator><pubDate>Fri, 19 Nov 2010 06:03:27 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Fri, 19 Nov 2010 09:10:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::string s(buf.begin(),buf.begin()+bytes);
</code></pre>
<p>Dies funktioniert, wenn <code>sizeof(BYTE)==sizeof(char)</code> .<br />
Eine Möglichkeit, wäre es, wie istri gezeigt hat, über std::stringstreams zu gehen, eine Andere:</p>
<pre><code class="language-cpp">template&lt;class F1, class F2&gt; inline
F1 find_first_not_of(const F1&amp; first1, const F1&amp; last1,
					 const F2&amp; first2, const F2&amp; last2) 
{
	F1 fir = first1;
	for (; fir != last1; ++fir)
	{
		F2 mid2;
		for (mid2 = first2; mid2 != last2; ++mid2)
			if (*fir == *mid2)
				break;
		if(mid2==last2)
			return(fir);
	}
	return (fir);
}

bool Split(const std::string&amp; org, const std::string&amp; separators, std::vector&lt;std::string&gt;&amp; words)
{
	std::string::const_iterator en, be=org.begin();
	do
	{
		en=find_first_of(be,org.end(), separators.begin(),separators.end());
		if(be!=en)
		{
			words.push_back(&quot;&quot;);
			for(std::string::const_iterator i=be; i!=(en); ++i)
				words.back()+=*i;
		}
		be=find_first_not_of(en,org.end(),
			separators.begin(),separators.end());
	} while(be!=org.end());

	return(words.size()?true:false);
}

int main()
{
    std::string str(&quot;Hallo,     wie geht es dir\tdenn heute so?&quot;);
	std::vector&lt;std::string&gt; v;
	if(Split(str,&quot; &quot;,v))
	{
		for(size_t i=0;i&lt;v.size();++i)
			std::cout &lt;&lt; v[i] &lt;&lt; endl;
	}
	v.clear();
	std::cout &lt;&lt; &quot;------------------------\n&quot;;
	if(Split(str,&quot; ,.?\t&quot;,v))
	{
		for(size_t i=0;i&lt;v.size();++i)
			std::cout &lt;&lt; v[i] &lt;&lt; endl;
	}
}
</code></pre>
<p>Erzeugt die Ausgabe</p>
<pre><code>Hallo,
wie
geht
es
dir     denn
heute
so?
------------------------
Hallo
wie
geht
es
dir
denn
heute
so
</code></pre>
<p>Du könntest Split() umschreiben, sodass die Funktion mit Iteratoren arbeitet und der vector buf direkt verwendet werden kann. Auch getestet mit <a href="http://codepad.org/1zrNIKgT" rel="nofollow">Codepad</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982696</guid><dc:creator><![CDATA[Vicious Falcon]]></dc:creator><pubDate>Fri, 19 Nov 2010 09:10:26 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Fri, 19 Nov 2010 11:13:38 GMT]]></title><description><![CDATA[<p>Hallo Vicious,</p>
<p>vielen Dank voerst!</p>
<p>Ok, dass es sehr aufschlussreich!<br />
Meine Frage ist nun, wie und was übergebe ich von meiner Funktion (rd) an die Funktion find_first_not_of ?</p>
<p>Das Problem ist einfach, dass die Funktion von mir gewisse Abhängigkeiten hat und nur mit der recv Methode was am Socket empfängt und ich nicht genau weiss wie ich das an deine Funktion anhänge bzw. wo ?!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982779</guid><dc:creator><![CDATA[Gast 123]]></dc:creator><pubDate>Fri, 19 Nov 2010 11:13:38 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Fri, 19 Nov 2010 11:30:19 GMT]]></title><description><![CDATA[<p>Hallo nochmal,</p>
<p>ok das mit den String convertieren klappt reibungslos.</p>
<p>Das mit den Wörter zerlegen ist etwas missverstanden wurden <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="🙂"
    /> Sorry mein Fehler... Und zwar will dich den String in Teilstringsschneiden die durch UCF-8 codierte zeichen getrennt sind!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982790</guid><dc:creator><![CDATA[Gast 123]]></dc:creator><pubDate>Fri, 19 Nov 2010 11:30:19 GMT</pubDate></item><item><title><![CDATA[Reply to char Vector in wörter zerlegen (oder in string umwandeln, dann in wörter zerlegen) on Fri, 19 Nov 2010 11:32:50 GMT]]></title><description><![CDATA[<p>Vicious Falcon schrieb:</p>
<blockquote>
<p>Dies funktioniert, wenn <code>sizeof(BYTE)==sizeof(char)</code> .</p>
</blockquote>
<p>Also immer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982792</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 19 Nov 2010 11:32:50 GMT</pubDate></item></channel></rss>