<?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[Alles rund um Strings]]></title><description><![CDATA[<p>Ich möchte z.b einen String in ein char-array übertragen, das gelingt mir leider nicht, dazu habe ich schon das Tuturial aus url]<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-155739.html%5B/url%5D" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-155739.html[/url]</a> durchgelesen, doch es ist etwas zu hoch für mich geschrieben.</p>
<p>Kann mir das jemand etwas einfacher beibringen?</p>
<p>für später:<br />
tutorials über jegliche string manipulations sind gerne willkommen. <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>
<pre><code class="language-cpp">//string to char-array
#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

string name = &quot;yoda&quot;;
int l = length(name);
char[l] = // wie kann ich jetzt da jedes einzelne Zeichen einlesen? vllt. mit schleife?
</code></pre>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202234/alles-rund-um-strings</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 14:09:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202234.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Jan 2008 08:59:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 08:59:17 GMT]]></title><description><![CDATA[<p>Ich möchte z.b einen String in ein char-array übertragen, das gelingt mir leider nicht, dazu habe ich schon das Tuturial aus url]<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-155739.html%5B/url%5D" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-155739.html[/url]</a> durchgelesen, doch es ist etwas zu hoch für mich geschrieben.</p>
<p>Kann mir das jemand etwas einfacher beibringen?</p>
<p>für später:<br />
tutorials über jegliche string manipulations sind gerne willkommen. <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>
<pre><code class="language-cpp">//string to char-array
#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

string name = &quot;yoda&quot;;
int l = length(name);
char[l] = // wie kann ich jetzt da jedes einzelne Zeichen einlesen? vllt. mit schleife?
</code></pre>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433447</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Wed, 09 Jan 2008 08:59:17 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 09:12:21 GMT]]></title><description><![CDATA[<p>Die Länge bekommst du nicht per &quot;length(name)&quot;, sondern per &quot;name.length()&quot; - und auf die einzelnen Zeichen kannst du wahlweise über den Index-Operator [] oder die Methode at() zugreifen:</p>
<pre><code class="language-cpp">int l=name.length();
for(int i=0;i&lt;l;++i)
{
  char c = name[i];
  ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1433454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433454</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Jan 2008 09:12:21 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 09:18:44 GMT]]></title><description><![CDATA[<p>[/cpp]<br />
#include &lt;iostream&gt;<br />
#include &lt;string&gt;</p>
<pre><code class="language-cpp">using namespace std;

int main()
{
string name = &quot;yoda&quot;;
int l = name.length();
char c[l];
for(int i=0;i&lt;l;++i)
	{
	  char c[i] = name[i];
	}

for (int j=0;j&lt;l; j++)
	cout &lt;&lt; char[j] &lt;&lt; ' ';

cin.get();
}
</code></pre>
<p>Fehlermeldung:</p>
<blockquote>
<p>(9) : warning C4267: 'Initialisierung': Konvertierung von 'size_t' nach 'int', Datenverlust möglich</p>
</blockquote>
<p>welchen typ soll ich dann für l nehmen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433464</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Wed, 09 Jan 2008 09:18:44 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 09:20:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

int main()
{
string name = &quot;yoda&quot;;
int l = name.length();
char c[l];
for(int i=0;i&lt;l;++i)
	{
	  c[i] = name[i];
	}

for (int j=0;j&lt;l; j++)
	cout &lt;&lt; c[j] &lt;&lt; ' ';

cin.get();
}
</code></pre>
<p>das typproblem bleibt immernoch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433466</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Wed, 09 Jan 2008 09:20:35 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 09:30:07 GMT]]></title><description><![CDATA[<p>Als Typ für die Längenangabe empfiehlt sich der Typ, den length() zurückgibt - size_t.</p>
<p>Aber ansonsten hat dein Programm noch ein kleines Problem - VLAs (&quot;char c[l];&quot;) gibt es zwar in C99, aber nicht in C++. Und was spricht dagegen, die Inhalte deines Strings direkt zu verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433471</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Jan 2008 09:30:07 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 09:42:32 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Als Typ für die Längenangabe empfiehlt sich der Typ, den length() zurückgibt - size_t.</p>
<p>Aber ansonsten hat dein Programm noch ein kleines Problem - VLAs (&quot;char c[l];&quot;) gibt es zwar in C99, aber nicht in C++.</p>
<p>Und was spricht dagegen, die Inhalte deines Strings direkt zu verwenden?</p>
</blockquote>
<p>dann sieht das nun so aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

int main()
{
string name = &quot;yoda&quot;;
size_t l = name.length();
for(int i=0;i&lt;l;++i)
	{
	  char c = name[i];
	  cout &lt;&lt; c &lt;&lt; ' ';
	}

cin.get();
}
</code></pre>
<p>Wie mache ich das aber wenn ich den gesamten string in ein char- array speichern möchte?</p>
<p>das ich dann später wie folgt darauf zugreifen kann ( ausserhalb der Schleife, weil da überschreibt er ja nur immer den einen char namens c):</p>
<p>cout &lt;&lt; c[0]; --&gt; y<br />
cout &lt;&lt; c[1]; --&gt; o<br />
cout &lt;&lt; c[2]; --&gt; d<br />
cout &lt;&lt; c[3]; --&gt; a</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433483</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Wed, 09 Jan 2008 09:42:32 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 09:48:50 GMT]]></title><description><![CDATA[<p>junger_padawan schrieb:</p>
<blockquote>
<p>Wie mache ich das aber wenn ich den gesamten string in ein char- array speichern möchte?</p>
</blockquote>
<p>Feste Größe für das Array angeben oder es auf dem Heap erzeugen - die Kopierschleife an sich ist in Ordnung (nur imho unnötig).</p>
<blockquote>
<p>das ich dann später wie folgt darauf zugreifen kann ( ausserhalb der Schleife, weil da überschreibt er ja nur immer den einen char namens c):</p>
</blockquote>
<p>Greif lieber direkt auf den String-Inhalt zu anstatt die Daten extra in ein char-Array zu kopieren (über name[0] bis name[3] kannst du die einzelnen Buchstaben abfragen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433489</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Jan 2008 09:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 10:48:34 GMT]]></title><description><![CDATA[<p>So kannst du das ganze in einen c string kopieren, ist aber wiegesagt gar nicht nötig.</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;cstring&gt;
#include &lt;iostream&gt;

using namespace std;
int main()
{
	string name = &quot;yoda&quot;;

	// Mit kopieren
	char* cname = new char[name.size() + 1];
	strcpy(cname, name.c_str());
	cout &lt;&lt; cname[0] &lt;&lt; '\n';  
	cout &lt;&lt; cname[1] &lt;&lt; '\n';  
	cout &lt;&lt; cname[2] &lt;&lt; '\n';  
	cout &lt;&lt; cname[3] &lt;&lt; '\n'; 
	delete[] cname;

	// geht aber auch so direkt
	cout &lt;&lt; name[0] &lt;&lt; '\n';  
	cout &lt;&lt; name[1] &lt;&lt; '\n';  
	cout &lt;&lt; name[2] &lt;&lt; '\n';  
	cout &lt;&lt; name[3] &lt;&lt; '\n';	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1433533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433533</guid><dc:creator><![CDATA[Tanren]]></dc:creator><pubDate>Wed, 09 Jan 2008 10:48:34 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 11:21:04 GMT]]></title><description><![CDATA[<p>Okey dann also so:</p>
<pre><code class="language-cpp">string name = &quot;yoda&quot;;
size_t l = name.length();
for(int i=0;i&lt;l;++i)
    {
      cout &lt;&lt; name[i] &lt;&lt; ' ';
    }
</code></pre>
<p>Was wäre aber jetzt wenn ich aus einer Datei einlesen will, es können max. 10 Zeilen stehen, und max. 50 Zeichen pro Zeile.</p>
<p>Ermitteln Sie für jede Zeile, wie viel Großbuchstaben (A – Z und Ä, Ö, Ü), wie viel Kleinbuchstaben (a – z, ä, ö, ü, ß) und wie viel sonstige Zeichen die Zeile enthält.</p>
<p><a href="//Daten.txt">//Daten.txt</a></p>
<pre><code>MEISTER Yoda weise, aber nicht weiß!!
MEISTER obiwan
PAdaWaN Skywalker
Böser darthmaul !
</code></pre>
<p>Wäre es dann auch sinnvoll nur mit string zu machen? oder eher mit char?</p>
<pre><code class="language-cpp">string datei = &quot;c:\\daten.txt&quot;;
string line;

ifstream in;
in.open(datei.c_str());

getline(in,line);
</code></pre>
<p>hier liest er ja nur die erste Zeile ein, wie mach ich das wenn ich die zweite Zeile im selben string haben möchte aber in neuer array zeile?<br />
oder geht das nun nur mit c string?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433561</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Wed, 09 Jan 2008 11:21:04 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 11:33:55 GMT]]></title><description><![CDATA[<p>Das geht mit C Strings genauso gut oder schlecht wie mit C++ Strings - du nimmst eine Schleife, um so lange zu lesen, bis deine Datei am Ende ist (mit C++ Strings geht es sogar noch besser, weil du keine Maximallänge für die Zeilen angeben mußt):</p>
<pre><code class="language-cpp">in.open(datei.c_str());

while(getline(in,line))
{
  //mach was mit der eingelesenen Zeile
}
</code></pre>
<p>(getline() liefert den Stream zurück - und der ist witzigerweise in einen Wahrheitswert konvertierbar, der aussagt, ob er noch Daten hat)</p>
<p>PS: Genau genommen hat der Stream einen operator void* - und dieser liefert den NULL-Zeiger zurück, wenn der Stream in einem Fehlerstatus (dazu gehört auch EOF) steckt. Und der NULL-Zeiger wird als Wahrheitswert false interpretiert und beendet die Lese-Schleife.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433569</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Jan 2008 11:33:55 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 11:40:04 GMT]]></title><description><![CDATA[<p>Was bringt die implizite Konvertierung nach void* ?<br />
Außer das void* nach bool kovertierbar ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433571</guid><dc:creator><![CDATA[bonusfrage]]></dc:creator><pubDate>Wed, 09 Jan 2008 11:40:04 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 11:45:15 GMT]]></title><description><![CDATA[<p>bonusfrage schrieb:</p>
<blockquote>
<p>Was bringt die implizite Konvertierung nach void* ?<br />
Außer das void* nach bool kovertierbar ist.</p>
</blockquote>
<p>Es erspart dir Schreibarbeit, weil du Anweisungen wie &quot;if(cin)&quot; oder das obige &quot;while(getline(in,line))&quot; schreiben kannst, ohne explizit auf .good() zu testen.<br />
(und es bietet wunderbare Möglichkeiten, Neulinge zu verwirren :D)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433573</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Jan 2008 11:45:15 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 12:38:24 GMT]]></title><description><![CDATA[<p>also so dann? Leider kommt nach einem durchlauf der while schleife ein xstring fehler:</p>
<blockquote>
<p>string subscript out of range</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;cstring&gt; 

using namespace std;

int main()
	{
		string datei = &quot;c:\\daten.txt&quot;;
		string line;

		ifstream in;
		in.open(datei.c_str());

		int zeilen=0;

		while(getline(in,line))
			{
				int g=0;
				int k=0;
				int sonstige=0;
				zeilen++;

				for (int i=0; i&lt; 50; i++)
					{
						int ascii = line[i];

						if (ascii == 153 || ascii == 152 || ascii == 142 || (ascii &lt;=90 &amp;&amp; ascii &gt;= 65))
							g+=1;
						if (ascii == 132 || ascii == 129 || ascii == 148 || (ascii &lt;=122 &amp;&amp; ascii &gt;= 97))
							k+=1;
						else
							sonstige+=1;

					}
				cout &lt;&lt; &quot;Zeile: &quot; &lt;&lt; zeilen &lt;&lt; &quot; hat &quot; &lt;&lt; g &lt;&lt; &quot; Grossbuchstaben und &quot; &lt;&lt; k &lt;&lt; &quot; Kleinbuchstaben und ausserdem &quot; &lt;&lt; sonstige &lt;&lt; &quot; andere Zeichen.&quot;&lt;&lt; endl;
			}

		cin.get();
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1433600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433600</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Wed, 09 Jan 2008 12:38:24 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 12:46:44 GMT]]></title><description><![CDATA[<p>Klar, die Zeilen haben ja teilweise auch weniger als 50 Zeichen - und da fliegt dir das Programm typischerweise um die Ohren (dein System scheint da recht fehlersicher zu sein). Ändere mal die Obergrenze der for()-Schleife auf den korrekten Wert <code>for(int i=0;i&lt;line.length();++i)...</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433610</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Jan 2008 12:46:44 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 12:51:37 GMT]]></title><description><![CDATA[<p>wenn in deiner Datei Zeilen mit weniger als 50 Zeichen stehen, wird getline entsprechend einen string einlesen, dessen Laenge weniger als 50 Zeichen betraegt. Dann jagst du in deiner for-schleife ueber das Ende des strings hinaus. (Uebrigens nett von deinem Compiler, in der debug-version so eine nette Fehlermeldung an Stelle eines simplen crash+core-dump hinzulegen &gt;D) Deshalb:</p>
<pre><code class="language-cpp">for(int i=0; i&lt; line.size(); ++i)
</code></pre>
<p>/edit: CStoll mal wieder... antwortet schneller als die Polizei erlaubt <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1433615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433615</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 09 Jan 2008 12:51:37 GMT</pubDate></item><item><title><![CDATA[Reply to Alles rund um Strings on Wed, 09 Jan 2008 13:23:33 GMT]]></title><description><![CDATA[<p>vielen dank jetzt funktioniert es tatellos <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>
<p>fals ich noch fragen zu strings habe werde ich sie hier posten.<br />
Bis dahin machts gut. <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/1433632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433632</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Wed, 09 Jan 2008 13:23:33 GMT</pubDate></item></channel></rss>