<?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[Anfängerfrage: Strings in Zahlen (enum&#x2F;switch)]]></title><description><![CDATA[<p>Hi, ich bin noch ziemlich blutiger Anfänger in C++ und hab bei der Implementierung der Vigenere-Kryptografie folgendes Problem:</p>
<p>Ich habe sowohl den Key als auch den Klartext als String (als C++ String, nicht als C-String) eingelesen und muss diese ja nun &quot;addieren&quot;. Dazu habe ich erstmal versucht, den Buchstaben an i-ter Stelle im Klartext in einer Enumeration</p>
<pre><code class="language-cpp">enum Alphabet {A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z};
  for(int i=0; i&lt;textlength; i++)
  {
   Alphabet TextI=Text[i];
</code></pre>
<p>textlength liegt korrekt vor, der String &quot;Text&quot; auch.</p>
<p>Als das nicht funktionierte, wolölte ich den absoluten Low-Level Weg gehen und über Switch-Blöcke zu &quot;übersetzen&quot;.</p>
<pre><code class="language-cpp">switch(Text[i])            
   {
    case A:
     zuueber=1;
     break;
</code></pre>
<p>Das klappt leider auch nicht, gibt es eine Möglichkeit, die Buchstaben aus dem String zu holen, so dass ich sie entweder in die enum oder in die Switch-Case Blöcke kriege?</p>
<p>Danke,<br />
Dennis</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/129058/anfängerfrage-strings-in-zahlen-enum-switch</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 01:43:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/129058.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Dec 2005 18:04:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfrage: Strings in Zahlen (enum&#x2F;switch) on Fri, 09 Dec 2005 18:04:05 GMT]]></title><description><![CDATA[<p>Hi, ich bin noch ziemlich blutiger Anfänger in C++ und hab bei der Implementierung der Vigenere-Kryptografie folgendes Problem:</p>
<p>Ich habe sowohl den Key als auch den Klartext als String (als C++ String, nicht als C-String) eingelesen und muss diese ja nun &quot;addieren&quot;. Dazu habe ich erstmal versucht, den Buchstaben an i-ter Stelle im Klartext in einer Enumeration</p>
<pre><code class="language-cpp">enum Alphabet {A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z};
  for(int i=0; i&lt;textlength; i++)
  {
   Alphabet TextI=Text[i];
</code></pre>
<p>textlength liegt korrekt vor, der String &quot;Text&quot; auch.</p>
<p>Als das nicht funktionierte, wolölte ich den absoluten Low-Level Weg gehen und über Switch-Blöcke zu &quot;übersetzen&quot;.</p>
<pre><code class="language-cpp">switch(Text[i])            
   {
    case A:
     zuueber=1;
     break;
</code></pre>
<p>Das klappt leider auch nicht, gibt es eine Möglichkeit, die Buchstaben aus dem String zu holen, so dass ich sie entweder in die enum oder in die Switch-Case Blöcke kriege?</p>
<p>Danke,<br />
Dennis</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938361</guid><dc:creator><![CDATA[ethone]]></dc:creator><pubDate>Fri, 09 Dec 2005 18:04:05 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Strings in Zahlen (enum&#x2F;switch) on Fri, 09 Dec 2005 18:34:44 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">enum Alphabet {A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z};
  for(int i=0; i&lt;textlength; i++) {
   Alphabet TextI=Text[i] - 'A';
</code></pre>
<pre><code class="language-cpp">switch(Text[i]) {
    case 'A':
     zuueber=1;
     break;
</code></pre>
<p>Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938374</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Fri, 09 Dec 2005 18:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Strings in Zahlen (enum&#x2F;switch) on Sat, 10 Dec 2005 09:09:59 GMT]]></title><description><![CDATA[<p>ZuK schrieb:</p>
<blockquote>
<pre><code class="language-cpp">enum Alphabet {A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z};
  for(int i=0; i&lt;textlength; i++) {
   Alphabet TextI=Text[i] - 'A';
</code></pre>
</blockquote>
<p>Das ist allerdings nicht korrekt, Text[i] - 'A' ist nunmal kein Wert vom Typ Alphabet. Ein expliziter Cast hilft allerdings dabei.</p>
<pre><code class="language-cpp">enum Alphabet {A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z};
  for(int i=0; i&lt;textlength; i++)
  {
   Alphabet TextI = static_cast&lt;Alphabet&gt;(Text[i] - 'A');
  }
</code></pre>
<p>Dass dies allerdings einiges an Fehlerpotenzial bietet, brauch ich wohl nicht weiter zu erwähnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938694</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sat, 10 Dec 2005 09:09:59 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Strings in Zahlen (enum&#x2F;switch) on Sat, 10 Dec 2005 09:23:15 GMT]]></title><description><![CDATA[<p>[quote=&quot;ethone&quot;]</p>
<pre><code class="language-cpp">enum Alphabet {A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z};
  for(int i=0; i&lt;textlength; i++)
  {
   Alphabet TextI=Text[i];
</code></pre>
<p>[/cpp]<br />
das macht mich nicht extrem fröhlich.<br />
ist das verfahren nicht das, wo du als schlüssel die 26 buchstaben in ner wilden reihenfolge hast und wo du dann um einen buchstaben zu verschlüsseln, (zb beispiel C) den zu einer zahl machst (3, weil an dritter stelle im alphabet) und dann die zahl anhand des keys zum buchstaben (an der 3. stelle im key gucken)?</p>
<p>wenn ja, denke ich mir eher sowas:</p>
<pre><code class="language-cpp">char key[]=&quot;zbcdefghijklmnopqrstuvwxya&quot;;//zum testen nur z und a vertauscht
for(int i=0; i&lt;textlength; ++i){
   char input=text[i];
   int zuueber=input-'a';
   if(zuueber&lt;0 || zuueber&gt;26){
      cout&lt;&lt;'?';
      continue;
   }
   char output='a'+zuueber;
   cout&lt;&lt;output;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/938703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938703</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 10 Dec 2005 09:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Strings in Zahlen (enum&#x2F;switch) on Sat, 10 Dec 2005 11:56:40 GMT]]></title><description><![CDATA[<p>Bei dem Verfahren benutzt du kein wirres Alphabet, sondern ein so oft hintereinandergelegtes Schlüsselwort, wie der Quelltext lang ist. Dann &quot;addierst&quot; du zu dem Ursprungsbuchstaben den Key-Buchstaben plus i. Ich war im erklären noch nie so wirklich top... <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="😃"
    /><br />
Naja, jedenfalls ist der Grundansatz ja der, dass Buchstaben addiert werden müssen. Dafür wollte ich die enum nehmen, die ich immer noch nicht zum laufen gebracht habe. Ich hab das ganze jetzt über einen Switch hinbekommen, dank an Kurt! Hab ja nur die Hochkommata vergessen.</p>
<pre><code class="language-cpp">int zuueber;
  int zukey;
  int verschlB;
  for(int i=0; i&lt;textlength; i++)
  {
   switch(Text[i])             // &quot;Übersetzung&quot; des Ursprungs-Buchstaben
   {
    case 'A':
     zuueber=0;
     break;
    case 'B':
     zuueber=1;
     break; 
    case 'C':
     zuueber=2;
     break;
(...)
    case 'Z':
     zuueber=25;
     break;       
    default:
    cout &lt;&lt; &quot;Fehler!&quot;;       
   }
</code></pre>
<p>dann</p>
<pre><code class="language-cpp">switch(key[i])             // &quot;Übersetzung&quot; des Key-Buchstaben
   {
    case 'A':
     zukey=0;
     break;
(...)
    case 'Z':
     zukey=25;
     break;       
    default:
    cout &lt;&lt; &quot;Fehler!&quot;;       
   }
   verschlB=zuueber-i+zukey;
   if(verschlB&lt;0)
    {
     verschlB=26+verschlB;
    }
   else
   {
    verschlB=verschlB%26;
   }
</code></pre>
<p>und schließlich:</p>
<pre><code class="language-cpp">switch(verschlB)             // &quot;Rückübersetzung&quot; des Key-Buchstaben
   {
    case 0:
     verschl=&quot;A&quot;;
     break;
(...)
    case 25:
     verschl=&quot;Z&quot;;
     break;         
    default:
    cout &lt;&lt; &quot;Fehler!&quot;;       
   }   
   verschlWort=verschlWort+verschl;
  }
  cout &lt;&lt; &quot;VERSCHLUESSELTER TEXT:&quot;&lt;&lt;endl;
  cout &lt;&lt; verschlWort &lt;&lt; endl;    
}
</code></pre>
<p>Wenn mir noch jemand Tipps zum enum geben kann, her damit. Das müsste doch irgendwie auch gehen, oder?<br />
Das über die drei Switches zu machen... Naja, es läuft. <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="🙂"
    /><br />
Danke für die Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938772</guid><dc:creator><![CDATA[ethone]]></dc:creator><pubDate>Sat, 10 Dec 2005 11:56:40 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Strings in Zahlen (enum&#x2F;switch) on Sat, 10 Dec 2005 12:08:30 GMT]]></title><description><![CDATA[<p>Verstehe zwar nicht ganz was du da machst aber</p>
<pre><code class="language-cpp">int zuueber;
  int zukey;
  int verschlB;
  for(int i=0; i&lt;textlength; i++)
  {
   switch(Text[i])             // &quot;Übersetzung&quot; des Ursprungs-Buchstaben
   {
    case 'A':
     zuueber=0;
     break;
    case 'B':
     zuueber=1;
     break;
    case 'C':
     zuueber=2;
     break;
(...)
    case 'Z':
     zuueber=25;
     break;      
    default:
    cout &lt;&lt; &quot;Fehler!&quot;;      
   }
</code></pre>
<p>Kannst auch einfacher haben</p>
<pre><code class="language-cpp">int zuueber;
  int zukey;
  int verschlB;
  for(int i=0; i&lt;textlength; i++)
  {
     zuueber=Text[i] - 'A';
     if ( zuueber &gt; 25 )
        cout &lt;&lt; &quot;Fehler!&quot;;      
  }
</code></pre>
<p>Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938783</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sat, 10 Dec 2005 12:08:30 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Strings in Zahlen (enum&#x2F;switch) on Sat, 10 Dec 2005 12:21:19 GMT]]></title><description><![CDATA[<p>Ok, sorry für die blöde Frage, aber wie genau läuft die Zeile ab</p>
<pre><code class="language-cpp">zuueber=Text[i] - 'A';
</code></pre>
<p>Könntest du mir da einen link zu einer Erklärung/Tutorial geben? Ich hab das noch nie gesehen. Eingebaut ins Programm funktioniert es zwar, aber dadurch weiß ich nur, dass es die selbe Funktion übernimmt wie mein elendig langer Switch. <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="🙂"
    /> Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938799</guid><dc:creator><![CDATA[ethone]]></dc:creator><pubDate>Sat, 10 Dec 2005 12:21:19 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Strings in Zahlen (enum&#x2F;switch) on Sat, 10 Dec 2005 12:33:44 GMT]]></title><description><![CDATA[<p>Sorry mit tutorials kann ich nicht dienen.<br />
also zb</p>
<pre><code class="language-cpp">int i = Text[i];
</code></pre>
<p>der char im Text an der stelle i wird in diesem Fall vom compiler automatisch (implizit) in ein int mit seinem ascii-code umgewandelt.<br />
Aus 'A' wird alo 65.<br />
Wenn du nun von 65 wieder den automatisch umgewandelten ascii-wert von 'A' abziehst dann wird daraus 0. aus 'B' wird 1 usw...<br />
Das ganze funktioniert zufällig weil in der ascii-tabelle die buchstaben A..Z hintereinender liegen.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938808</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sat, 10 Dec 2005 12:33:44 GMT</pubDate></item></channel></rss>