String into characters.

Started by
12 comments, last by phresnel 13 years, 5 months ago
Quote:Original post by rip-off
Quote:
but this would work also

Again, unnecessarily complicated.


I didn't say it could match yours, I merely said it worked. Before that, my statement was "Alright that one is good." - referring to your solution.

It was my proper solution to contrast the
char* input_chars = input_string.c_str();
I did earlier, that's all. You win. :D
Advertisement
I am trying to take user input, turn the letters into ASCII and modify them and convert them back letters and put the string back together.

Right now I have it where it will put into ASCII and then I tested to see if I changed the number. I don't know where to go from here.

#include <iostream>#include <string>int main(){    std::string input;    char a[255];    std::cin >> input;    int s = input.size();    int charbuf;<br><br>    <span class="cpp-keyword">for</span>(<span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; s; i++)<br>    {<br>        a<span style="font-weight:bold;"> = input<span style="font-weight:bold;">;<br>    }<br>    std::cout &lt;&lt; input.size() &lt;&lt; std::endl;<br>    charbuf[<span class="cpp-number">0</span>] = (<span class="cpp-keyword">int</span>) a[<span class="cpp-number">0</span>];<br>    charbuf[<span class="cpp-number">1</span>] = (<span class="cpp-keyword">int</span>) a[<span class="cpp-number">1</span>];<br>    charbuf[<span class="cpp-number">2</span>] = (<span class="cpp-keyword">int</span>) a[<span class="cpp-number">2</span>];<br>    charbuf[<span class="cpp-number">3</span>] = (<span class="cpp-keyword">int</span>) a[<span class="cpp-number">3</span>];<br>    charbuf[<span class="cpp-number">4</span>] = (<span class="cpp-keyword">int</span>) a[<span class="cpp-number">4</span>];<br><br>    std::cout &lt;&lt; charbuf[<span class="cpp-number">1</span>] &lt;&lt; <span class="cpp-literal">"unmodified"</span> &lt;&lt; std::endl;<br>    charbuf[<span class="cpp-number">1</span>] += <span class="cpp-number">5</span>;<br>    std::cout &lt;&lt; charbuf[<span class="cpp-number">1</span>] &lt;&lt; <span class="cpp-literal">"Modified"</span> &lt;&lt; std::endl;<br><br>    <span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br>}<br><br><br><br><br></pre></div><!–ENDSCRIPT–><br><br>Edit: I have worked more &#111;n it and this is what I have so far. It works currently.<br><br><!–STARTSCRIPT–><!–source lang="cpp"–><div class="source"><pre><br><span class="cpp-directive">#include</span> &lt;iostream&gt;<br><span class="cpp-directive">#include</span> &lt;string&gt;<br><br><span class="cpp-keyword">int</span> main()<br>{<br>    std::string input;<br>    <span class="cpp-keyword">char</span> a[<span class="cpp-number">255</span>];<br>    std::cin &gt;&gt; input;<br>    <span class="cpp-keyword">int</span> s = input.size();<br>    <span class="cpp-keyword">int</span> charbuf;<br>    <span class="cpp-keyword">char</span> cback;<br>    std::string s1, s2, s3, s4, s5;<br>    std::string result;<br><br>    <span class="cpp-keyword">for</span>(<span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; s; i++)<br>    {<br>        a<span style="font-weight:bold;"> = input<span style="font-weight:bold;">;<br>    }<br>    std::cout &lt;&lt; input.size() &lt;&lt; std::endl;<br>    charbuf[<span class="cpp-number">0</span>] = (<span class="cpp-keyword">int</span>) a[<span class="cpp-number">0</span>];<br>    charbuf[<span class="cpp-number">1</span>] = (<span class="cpp-keyword">int</span>) a[<span class="cpp-number">1</span>];<br>    charbuf[<span class="cpp-number">2</span>] = (<span class="cpp-keyword">int</span>) a[<span class="cpp-number">2</span>];<br>    charbuf[<span class="cpp-number">3</span>] = (<span class="cpp-keyword">int</span>) a[<span class="cpp-number">3</span>];<br>    charbuf[<span class="cpp-number">4</span>] = (<span class="cpp-keyword">int</span>) a[<span class="cpp-number">4</span>];<br><br>    charbuf[<span class="cpp-number">1</span>] += <span class="cpp-number">1</span>;<br>    charbuf[<span class="cpp-number">2</span>] += <span class="cpp-number">2</span>;<br>    charbuf[<span class="cpp-number">3</span>] += <span class="cpp-number">3</span>;<br>    charbuf[<span class="cpp-number">4</span>] += <span class="cpp-number">4</span>;<br><br>    cback[<span class="cpp-number">0</span>] = (<span class="cpp-keyword">char</span>) charbuf[<span class="cpp-number">0</span>];<br>    cback[<span class="cpp-number">1</span>] = (<span class="cpp-keyword">char</span>) charbuf[<span class="cpp-number">1</span>];<br>    cback[<span class="cpp-number">2</span>] = (<span class="cpp-keyword">char</span>) charbuf[<span class="cpp-number">2</span>];<br>    cback[<span class="cpp-number">3</span>] = (<span class="cpp-keyword">char</span>) charbuf[<span class="cpp-number">3</span>];<br>    cback[<span class="cpp-number">4</span>] = (<span class="cpp-keyword">char</span>) charbuf[<span class="cpp-number">4</span>];<br><br>    s1 = cback[<span class="cpp-number">0</span>];<br>    s2 = cback[<span class="cpp-number">1</span>];<br>    s3 = cback[<span class="cpp-number">2</span>];<br>    s4 = cback[<span class="cpp-number">3</span>];<br>    s5 = cback[<span class="cpp-number">4</span>];<br><br>    result = s1 + s2 +s3 + s4 + s5;<br>    std::cout &lt;&lt; result &lt;&lt; std::endl;<br>    <span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br>}<br><br><br></pre></div><!–ENDSCRIPT–> <br><br><!–EDIT–><span class=editedby><!–/EDIT–>[Edited by - monp on November 16, 2010 3:12:54 PM]<!–EDIT–></span><!–/EDIT–>
You could do this ny modifying the std::string in place:
#include <iostream>#include <string>int main(){    std::string text;    std::cin >> text;    for(std::string::size_type i = 0 ; i < text.size() ; ++i)    {        text += i;    }    std::cout << text<< std::endl;    return 0;}

[edit:]
To explain a little more, characters are already integral types. You may use mathematical operations on them directly. Also, try to use a loop to handle repeated code, rather than writing something like the following:
charbuf[1] += 1;charbuf[2] += 2;charbuf[3] += 3;charbuf[4] += 4;


[Edited by - rip-off on November 16, 2010 3:35:00 PM]
Quote:Original post by monp
    std::string input;    char a[255];    std::cin >> input;    int s = input.size();    [...]    for(int i = 0; i < s; i++)    {        a = input;    }


As with wicked357 post, this reads "come, exploit me, become root and fuck the system".

Never ever use fixed size arrays when there is no protection that this size can be abused.

Quote:
    int s = input.size();    int charbuf;</pre><!–QUOTE–></td></tr></table></BLOCKQUOTE><!–/QUOTE–><!–ENDQUOTE–><br>And that is not valid C++.<br><br><br>For both there is a potion named <a href="http://www.cplusplus.com/reference/stl/vector/vector/">std::vector&lt;&gt;</a>.

This topic is closed to new replies.

Advertisement