c++ - 有什么方法可以优化c++字符串+ =运算符?

标签 c++ string optimization operator-keyword

英语不好,但请理解。

string str;
string str_base = "user name = ";
string str_user_input;
string str_system_message;
...

str = str_base + str_user_input + "\n [system message :]" + str_system_message;

cout << str << endl;
我正在使用这样的现有代码,有没有一种方法可以优化字符串?
我认为这段代码做了很多无用的操作。有没有一种优化的方法?

最佳答案

您的问题是+ =,但您没有在任何地方使用+ =。您仅使用+。
“+”可能是连接字符串的最有效方法。还有其他方法,但是+不太可能恶化。
如John Bollinger所说,如果您需要做的只是输出连接结果,则直接输出片段:

cout << str_base << str_user_input << "\n [system message :]" << str_system_message << endl;
或使用C++ 20(如Thomas Sablik所说):
std::format("{}{}\n [system message :]{}", str_base, str_user_input, str_system_message); otherwise: fmt::format("{}{}\n [system message :]{}", str_base, str_user_input, str_system_message);
我建议尝试改为优化代码的其他部分(如果需要),因为它不太可能比语言/编译器做得更好。忘记优化+。
从另一个 Angular 来看,请引用此问题的答案:
Efficient string concatenation in C++

关于c++ - 有什么方法可以优化c++字符串+ =运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63350848/

相关文章:

c++ - 将 unsigned char* 转换为 std::string

string - 在 MASM 中使用汇编代码替换字符串中的字符

java - 返回字符串结果不正确

java - 在字符串或整数之间添加点以创建双 JAVA

python - 使用 fmin_bfgs 进行逻辑回归和 Scipy 优化

机会游戏的算法

c++ - 尝试包装 std 容器以存储右值引用(如 unique_ptr,但在堆栈上)

c++ - 如何将构造函数(可变参数)作为模板参数传递?

c++ - 如何截断字符串 [formatting] ? C++

optimization - NASM 预取