Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Special Interest Groups
  3. C++ Gurus
  4. qstring .arg like thing in pure c++
Forum Updated to NodeBB v4.3 + New Features

qstring .arg like thing in pure c++

Scheduled Pinned Locked Moved Unsolved C++ Gurus
17 Posts 4 Posters 5.6k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Offline
    K Offline
    Konstantin Tokarev
    wrote on last edited by
    #6

    @user4592357 said in qstring .arg like thing in pure c++:

    as the title suggests, i need a way to format std::string like QString does with .arg(), but i only wanna use c++.

    i know that there's boost class to do that (namely, boost::format) but i don't to attach 3rd party since if i do, the project will become heavy (boost is like 1.2gb)

    Boost has a tool to extract only needed parts

    1 Reply Last reply
    2
    • U Offline
      U Offline
      user4592357
      wrote on last edited by
      #7

      thanks, but seems like all the folder got copied

      here's how i did it:

      bcp.exe --boost=..\..\ format C:\Documents\proj\dependencies\boost_1_65_1\boost
      
      1 Reply Last reply
      0
      • U user4592357

        how is it 1 line? i added the format.hpp but it has dependencies so i need to add them too

        p.s. i can't be lazy cause i'm copying all the needed header files to my project dir :D

        p.s.2 or i'm doing something worng?

        VRoninV Offline
        VRoninV Offline
        VRonin
        wrote on last edited by VRonin
        #8

        @user4592357 said in qstring .arg like thing in pure c++:

        or i'm doing something worng?

        Exactly, you are doing the difficult way. Do not copy every file in your folder.

        • just add 1 line in the project file (assuming you use qmake on windows): INCLUDEPATH += C:/Boost/boost_1_65_0
        • re-run qmake
        • add #include<boost/format.hpp> in your source file

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        U 1 Reply Last reply
        2
        • VRoninV VRonin

          @user4592357 said in qstring .arg like thing in pure c++:

          or i'm doing something worng?

          Exactly, you are doing the difficult way. Do not copy every file in your folder.

          • just add 1 line in the project file (assuming you use qmake on windows): INCLUDEPATH += C:/Boost/boost_1_65_0
          • re-run qmake
          • add #include<boost/format.hpp> in your source file
          U Offline
          U Offline
          user4592357
          wrote on last edited by user4592357
          #9

          @VRonin

          the thing is that im not using qt. in that case i'd just use qstring and that's all.

          VRoninV 1 Reply Last reply
          0
          • U user4592357

            @VRonin

            the thing is that im not using qt. in that case i'd just use qstring and that's all.

            VRoninV Offline
            VRoninV Offline
            VRonin
            wrote on last edited by
            #10

            @user4592357 The above has nothing to do with Qt, just with the build system you use.

            Since you posted here I supposed you were using Qt Creator.
            If you use visual studio you should just add C:\Boost\boost_1_65_0 to the "Additional include directories" under Project Properies->C/C++->General

            "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
            ~Napoleon Bonaparte

            On a crusade to banish setIndexWidget() from the holy land of Qt

            U VRoninV 2 Replies Last reply
            2
            • VRoninV VRonin

              @user4592357 The above has nothing to do with Qt, just with the build system you use.

              Since you posted here I supposed you were using Qt Creator.
              If you use visual studio you should just add C:\Boost\boost_1_65_0 to the "Additional include directories" under Project Properies->C/C++->General

              U Offline
              U Offline
              user4592357
              wrote on last edited by
              #11

              @VRonin

              i've done that with the whole 1.2gb boost directly. that works

              now i need to send the project to my teacher but i don't want to include 1.2gb of files.

              and how can including just the header work if it includes other files? i still don't get it

              1 Reply Last reply
              0
              • VRoninV Offline
                VRoninV Offline
                VRonin
                wrote on last edited by
                #12

                What program are you using to write, compile and link your binaries?
                What OS are you on?

                "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                ~Napoleon Bonaparte

                On a crusade to banish setIndexWidget() from the holy land of Qt

                1 Reply Last reply
                1
                • U Offline
                  U Offline
                  user4592357
                  wrote on last edited by
                  #13

                  visual studio 2017 on windows 10

                  1 Reply Last reply
                  0
                  • VRoninV VRonin

                    @user4592357 The above has nothing to do with Qt, just with the build system you use.

                    Since you posted here I supposed you were using Qt Creator.
                    If you use visual studio you should just add C:\Boost\boost_1_65_0 to the "Additional include directories" under Project Properies->C/C++->General

                    VRoninV Offline
                    VRoninV Offline
                    VRonin
                    wrote on last edited by VRonin
                    #14

                    @VRonin said in qstring .arg like thing in pure c++:

                    if you use visual studio you should just add C:\Boost\boost_1_65_0 to the "Additional include directories" under Project Properies->C/C++->General

                    Did you try this before copying the 1.2 GB? of course C:\Boost\boost_1_65_0 is just an example and you should point to the folder where you have downloaded boost

                    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                    ~Napoleon Bonaparte

                    On a crusade to banish setIndexWidget() from the holy land of Qt

                    1 Reply Last reply
                    0
                    • sneubertS Offline
                      sneubertS Offline
                      sneubert
                      wrote on last edited by
                      #15

                      What about stringstream?
                      (http://en.cppreference.com/w/cpp/io/basic_ostringstream)

                      I always use something like this

                      #include <iostream>
                      #include <sstream>
                      #include <string>
                      
                      std::ostringstream mystring;
                      std::string someText = "something";
                      int number = 11;
                      mystring << "This is " << someText << " in pure c++ " << number;
                      std::cout << mystring.str();
                      
                      K 1 Reply Last reply
                      2
                      • sneubertS sneubert

                        What about stringstream?
                        (http://en.cppreference.com/w/cpp/io/basic_ostringstream)

                        I always use something like this

                        #include <iostream>
                        #include <sstream>
                        #include <string>
                        
                        std::ostringstream mystring;
                        std::string someText = "something";
                        int number = 11;
                        mystring << "This is " << someText << " in pure c++ " << number;
                        std::cout << mystring.str();
                        
                        K Offline
                        K Offline
                        Konstantin Tokarev
                        wrote on last edited by
                        #16

                        @sneubert But it works well only for simple formatting, when you need to print columns or specify precision of floating-point numbers, you have to face the nightmare of ios flags

                        sneubertS 1 Reply Last reply
                        1
                        • K Konstantin Tokarev

                          @sneubert But it works well only for simple formatting, when you need to print columns or specify precision of floating-point numbers, you have to face the nightmare of ios flags

                          sneubertS Offline
                          sneubertS Offline
                          sneubert
                          wrote on last edited by
                          #17

                          @Konstantin-Tokarev
                          yes u are right even though for my use cases the list of manipulators
                          (http://en.cppreference.com/w/cpp/io/manip) is sufficient and keep in
                          mind that only the brave ones are rewarded :-)

                          1 Reply Last reply
                          0

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved