Assign ostream to a datatype string in c++












0















I have a below method that I can understand by name is converting the output in a pretty format to display. But I don't understand what this code is doing and what is its return type. How can I assign this return type to a string datatype which I want to access from javascript



std::ostream & prettyPrintRaw(std::ostream &out, const std::vector<unsigned char> &buf) {

vector<unsigned char>::const_iterator ptr = buf.begin();

vector<unsigned char>::const_iterator end = buf.end();

int i = 0;

while (ptr != end) {

char c = (char) *ptr;

if (c >= ' ' && c <= '~') {
out.put(c);
barCodeDataChar[i] = c;
i++;
}
else
out << '{' << (int) c << '}';

ptr++;
} // end while

return out;

} // end function


Sorry I am not able to prettyFormat this piece of code










share|improve this question




















  • 1





    Possible duplicate of Converting ostream into standard string

    – user10605163
    Jan 1 at 5:22






  • 1





    or maybe stackoverflow.com/questions/44997424/…

    – user10605163
    Jan 1 at 5:24
















0















I have a below method that I can understand by name is converting the output in a pretty format to display. But I don't understand what this code is doing and what is its return type. How can I assign this return type to a string datatype which I want to access from javascript



std::ostream & prettyPrintRaw(std::ostream &out, const std::vector<unsigned char> &buf) {

vector<unsigned char>::const_iterator ptr = buf.begin();

vector<unsigned char>::const_iterator end = buf.end();

int i = 0;

while (ptr != end) {

char c = (char) *ptr;

if (c >= ' ' && c <= '~') {
out.put(c);
barCodeDataChar[i] = c;
i++;
}
else
out << '{' << (int) c << '}';

ptr++;
} // end while

return out;

} // end function


Sorry I am not able to prettyFormat this piece of code










share|improve this question




















  • 1





    Possible duplicate of Converting ostream into standard string

    – user10605163
    Jan 1 at 5:22






  • 1





    or maybe stackoverflow.com/questions/44997424/…

    – user10605163
    Jan 1 at 5:24














0












0








0








I have a below method that I can understand by name is converting the output in a pretty format to display. But I don't understand what this code is doing and what is its return type. How can I assign this return type to a string datatype which I want to access from javascript



std::ostream & prettyPrintRaw(std::ostream &out, const std::vector<unsigned char> &buf) {

vector<unsigned char>::const_iterator ptr = buf.begin();

vector<unsigned char>::const_iterator end = buf.end();

int i = 0;

while (ptr != end) {

char c = (char) *ptr;

if (c >= ' ' && c <= '~') {
out.put(c);
barCodeDataChar[i] = c;
i++;
}
else
out << '{' << (int) c << '}';

ptr++;
} // end while

return out;

} // end function


Sorry I am not able to prettyFormat this piece of code










share|improve this question
















I have a below method that I can understand by name is converting the output in a pretty format to display. But I don't understand what this code is doing and what is its return type. How can I assign this return type to a string datatype which I want to access from javascript



std::ostream & prettyPrintRaw(std::ostream &out, const std::vector<unsigned char> &buf) {

vector<unsigned char>::const_iterator ptr = buf.begin();

vector<unsigned char>::const_iterator end = buf.end();

int i = 0;

while (ptr != end) {

char c = (char) *ptr;

if (c >= ' ' && c <= '~') {
out.put(c);
barCodeDataChar[i] = c;
i++;
}
else
out << '{' << (int) c << '}';

ptr++;
} // end while

return out;

} // end function


Sorry I am not able to prettyFormat this piece of code







javascript c++ visual-studio






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 1 at 5:46









DOOM

556313




556313










asked Jan 1 at 5:12









Vinodh Kumar CVinodh Kumar C

444




444








  • 1





    Possible duplicate of Converting ostream into standard string

    – user10605163
    Jan 1 at 5:22






  • 1





    or maybe stackoverflow.com/questions/44997424/…

    – user10605163
    Jan 1 at 5:24














  • 1





    Possible duplicate of Converting ostream into standard string

    – user10605163
    Jan 1 at 5:22






  • 1





    or maybe stackoverflow.com/questions/44997424/…

    – user10605163
    Jan 1 at 5:24








1




1





Possible duplicate of Converting ostream into standard string

– user10605163
Jan 1 at 5:22





Possible duplicate of Converting ostream into standard string

– user10605163
Jan 1 at 5:22




1




1





or maybe stackoverflow.com/questions/44997424/…

– user10605163
Jan 1 at 5:24





or maybe stackoverflow.com/questions/44997424/…

– user10605163
Jan 1 at 5:24












2 Answers
2






active

oldest

votes


















1














You can remove the std::ostream &out parameter, and use a string stream to construct you string value.



You can then use myStringStream.str() to get a string.



#include <sstream>
#include <string>

std::string prettyPrintRaw(const std::vector<char> &buf) {

auto ptr = buf.begin();
auto end = buf.end();
std::stringstream out;

int i = 0;

while (ptr != end) {

char c = (char) *ptr;

if (c >= ' ' && c <= '~'){
out.put(c);
i++;
}
else {
out << '{' << (int) c << '}';
}

ptr++;
}

return out.str();
}


Edit:



Obviously std::vector is a template class and needs a template parameter...
Also one should declare iterators with auto (according to my ide).



Edit 2:



The line barCodeDataChar[i] = c; does not work in the code example given as barCodeDataChar is not defined.






share|improve this answer

































    0














    Thanks Kanjio, but I had to make the below changes to make it work



    std::string prettyPrintRaw1(const std::vector<unsigned char> &buf) {

    vector<unsigned char>::const_iterator ptr = buf.begin();
    vector<unsigned char>::const_iterator end = buf.end();
    std::stringstream out;

    int i = 0;

    while (ptr != end) {

    char c = (char) *ptr;

    if (c >= ' ' && c <= '~'){
    out.put(c);
    }
    else {
    out << '{' << (int) c << '}';
    }

    ptr++;
    }

    return out.str();


    }






    share|improve this answer
























    • Thanks for pointing that out, i updated my answer.

      – Kanjiu
      Jan 1 at 8:30











    • Also its spelled Kanjiu not Kanjio ;)

      – Kanjiu
      Jan 1 at 8:32











    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53993141%2fassign-ostream-to-a-datatype-string-in-c%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    You can remove the std::ostream &out parameter, and use a string stream to construct you string value.



    You can then use myStringStream.str() to get a string.



    #include <sstream>
    #include <string>

    std::string prettyPrintRaw(const std::vector<char> &buf) {

    auto ptr = buf.begin();
    auto end = buf.end();
    std::stringstream out;

    int i = 0;

    while (ptr != end) {

    char c = (char) *ptr;

    if (c >= ' ' && c <= '~'){
    out.put(c);
    i++;
    }
    else {
    out << '{' << (int) c << '}';
    }

    ptr++;
    }

    return out.str();
    }


    Edit:



    Obviously std::vector is a template class and needs a template parameter...
    Also one should declare iterators with auto (according to my ide).



    Edit 2:



    The line barCodeDataChar[i] = c; does not work in the code example given as barCodeDataChar is not defined.






    share|improve this answer






























      1














      You can remove the std::ostream &out parameter, and use a string stream to construct you string value.



      You can then use myStringStream.str() to get a string.



      #include <sstream>
      #include <string>

      std::string prettyPrintRaw(const std::vector<char> &buf) {

      auto ptr = buf.begin();
      auto end = buf.end();
      std::stringstream out;

      int i = 0;

      while (ptr != end) {

      char c = (char) *ptr;

      if (c >= ' ' && c <= '~'){
      out.put(c);
      i++;
      }
      else {
      out << '{' << (int) c << '}';
      }

      ptr++;
      }

      return out.str();
      }


      Edit:



      Obviously std::vector is a template class and needs a template parameter...
      Also one should declare iterators with auto (according to my ide).



      Edit 2:



      The line barCodeDataChar[i] = c; does not work in the code example given as barCodeDataChar is not defined.






      share|improve this answer




























        1












        1








        1







        You can remove the std::ostream &out parameter, and use a string stream to construct you string value.



        You can then use myStringStream.str() to get a string.



        #include <sstream>
        #include <string>

        std::string prettyPrintRaw(const std::vector<char> &buf) {

        auto ptr = buf.begin();
        auto end = buf.end();
        std::stringstream out;

        int i = 0;

        while (ptr != end) {

        char c = (char) *ptr;

        if (c >= ' ' && c <= '~'){
        out.put(c);
        i++;
        }
        else {
        out << '{' << (int) c << '}';
        }

        ptr++;
        }

        return out.str();
        }


        Edit:



        Obviously std::vector is a template class and needs a template parameter...
        Also one should declare iterators with auto (according to my ide).



        Edit 2:



        The line barCodeDataChar[i] = c; does not work in the code example given as barCodeDataChar is not defined.






        share|improve this answer















        You can remove the std::ostream &out parameter, and use a string stream to construct you string value.



        You can then use myStringStream.str() to get a string.



        #include <sstream>
        #include <string>

        std::string prettyPrintRaw(const std::vector<char> &buf) {

        auto ptr = buf.begin();
        auto end = buf.end();
        std::stringstream out;

        int i = 0;

        while (ptr != end) {

        char c = (char) *ptr;

        if (c >= ' ' && c <= '~'){
        out.put(c);
        i++;
        }
        else {
        out << '{' << (int) c << '}';
        }

        ptr++;
        }

        return out.str();
        }


        Edit:



        Obviously std::vector is a template class and needs a template parameter...
        Also one should declare iterators with auto (according to my ide).



        Edit 2:



        The line barCodeDataChar[i] = c; does not work in the code example given as barCodeDataChar is not defined.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Jan 1 at 8:29

























        answered Jan 1 at 5:30









        KanjiuKanjiu

        42110




        42110

























            0














            Thanks Kanjio, but I had to make the below changes to make it work



            std::string prettyPrintRaw1(const std::vector<unsigned char> &buf) {

            vector<unsigned char>::const_iterator ptr = buf.begin();
            vector<unsigned char>::const_iterator end = buf.end();
            std::stringstream out;

            int i = 0;

            while (ptr != end) {

            char c = (char) *ptr;

            if (c >= ' ' && c <= '~'){
            out.put(c);
            }
            else {
            out << '{' << (int) c << '}';
            }

            ptr++;
            }

            return out.str();


            }






            share|improve this answer
























            • Thanks for pointing that out, i updated my answer.

              – Kanjiu
              Jan 1 at 8:30











            • Also its spelled Kanjiu not Kanjio ;)

              – Kanjiu
              Jan 1 at 8:32
















            0














            Thanks Kanjio, but I had to make the below changes to make it work



            std::string prettyPrintRaw1(const std::vector<unsigned char> &buf) {

            vector<unsigned char>::const_iterator ptr = buf.begin();
            vector<unsigned char>::const_iterator end = buf.end();
            std::stringstream out;

            int i = 0;

            while (ptr != end) {

            char c = (char) *ptr;

            if (c >= ' ' && c <= '~'){
            out.put(c);
            }
            else {
            out << '{' << (int) c << '}';
            }

            ptr++;
            }

            return out.str();


            }






            share|improve this answer
























            • Thanks for pointing that out, i updated my answer.

              – Kanjiu
              Jan 1 at 8:30











            • Also its spelled Kanjiu not Kanjio ;)

              – Kanjiu
              Jan 1 at 8:32














            0












            0








            0







            Thanks Kanjio, but I had to make the below changes to make it work



            std::string prettyPrintRaw1(const std::vector<unsigned char> &buf) {

            vector<unsigned char>::const_iterator ptr = buf.begin();
            vector<unsigned char>::const_iterator end = buf.end();
            std::stringstream out;

            int i = 0;

            while (ptr != end) {

            char c = (char) *ptr;

            if (c >= ' ' && c <= '~'){
            out.put(c);
            }
            else {
            out << '{' << (int) c << '}';
            }

            ptr++;
            }

            return out.str();


            }






            share|improve this answer













            Thanks Kanjio, but I had to make the below changes to make it work



            std::string prettyPrintRaw1(const std::vector<unsigned char> &buf) {

            vector<unsigned char>::const_iterator ptr = buf.begin();
            vector<unsigned char>::const_iterator end = buf.end();
            std::stringstream out;

            int i = 0;

            while (ptr != end) {

            char c = (char) *ptr;

            if (c >= ' ' && c <= '~'){
            out.put(c);
            }
            else {
            out << '{' << (int) c << '}';
            }

            ptr++;
            }

            return out.str();


            }







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Jan 1 at 6:13









            Vinodh Kumar CVinodh Kumar C

            444




            444













            • Thanks for pointing that out, i updated my answer.

              – Kanjiu
              Jan 1 at 8:30











            • Also its spelled Kanjiu not Kanjio ;)

              – Kanjiu
              Jan 1 at 8:32



















            • Thanks for pointing that out, i updated my answer.

              – Kanjiu
              Jan 1 at 8:30











            • Also its spelled Kanjiu not Kanjio ;)

              – Kanjiu
              Jan 1 at 8:32

















            Thanks for pointing that out, i updated my answer.

            – Kanjiu
            Jan 1 at 8:30





            Thanks for pointing that out, i updated my answer.

            – Kanjiu
            Jan 1 at 8:30













            Also its spelled Kanjiu not Kanjio ;)

            – Kanjiu
            Jan 1 at 8:32





            Also its spelled Kanjiu not Kanjio ;)

            – Kanjiu
            Jan 1 at 8:32


















            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53993141%2fassign-ostream-to-a-datatype-string-in-c%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            How to fix TextFormField cause rebuild widget in Flutter

            in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith