C++ create string of text and variables

前端 未结 6 974

I\'m trying to do something very simple and yet, after an hour of so of searching a I can\'t find a suitable answer so I must be missing something fairly obvious.

I\

相关标签:
6条回答
  • 2020-12-24 11:16
    std::string var = "sometext" + somevar + "sometext" + somevar;
    

    This doesn't work because the additions are performed left-to-right and "sometext" (the first one) is just a const char *. It has no operator+ to call. The simplest fix is this:

    std::string var = std::string("sometext") + somevar + "sometext" + somevar;
    

    Now, the first parameter in the left-to-right list of + operations is a std::string, which has an operator+(const char *). That operator produces a string, which makes the rest of the chain work.

    You can also make all the operations be on var, which is a std::string and so has all the necessary operators:

    var = "sometext";
    var += somevar;
    var += "sometext";
    var += somevar;
    
    0 讨论(0)
  • 2020-12-24 11:18

    Have you considered using stringstreams?

    #include <string>
    #include <sstream>
    
    std::ostringstream oss;
    oss << "sometext" << somevar << "sometext" << somevar;
    std::string var = oss.str();
    
    0 讨论(0)
  • 2020-12-24 11:22

    The new way to do with c++20 is using format.

    #include <format>
    
    auto var = std::format("sometext {} sometext {}", somevar, somevar);
    
    0 讨论(0)
  • 2020-12-24 11:24

    In C++11 you can use std::to_string:

    std::string var = "sometext" + std::to_string(somevar) + "sometext" + std::to_string(somevar);  
    
    0 讨论(0)
  • 2020-12-24 11:30

    You can also use sprintf:

    char str[1024];
    sprintf(str, "somtext %s sometext %s", somevar, somevar);
    
    0 讨论(0)
  • 2020-12-24 11:31

    See also boost::format:

    #include <boost/format.hpp>
    
    std::string var = (boost::format("somtext %s sometext %s") % somevar % somevar).str();
    
    0 讨论(0)
提交回复
热议问题