初始化字符串后,可以在同一行中添加char和char *:
char mod;//this comes in as a parameter
string line = "text";
line += mod;
line += "more text";
是否有更有效和/或可能是单行的方式来做到这一点?像
这样的东西string line = "text" + mod + "more text";
答案 0 :(得分:3)
由于char *
不是字符串,因此您的单行无效,因此您无法使用+
将它们与char
s连接起来;你最后得到一个指针添加。如果你想要一个单行,你可以使用
string line = string("text") + mod + "more text";
但这不会比你的3行有效。
答案 1 :(得分:2)
你可以做你的第一个片段(你会发现只是通过编译!),但不是你的第二个。
您还可以考虑使用std::stringstream
:
std::stringstream ss;
ss << "text" << mod << "more text";
答案 2 :(得分:1)
您必须确保+
的第一个操作数是std::string
:
string line = string("text") + mod + "more text";
然后string("text") + mod
的结果是std::string
,并且可以附加"more text"
。
答案 3 :(得分:1)
运算符+=
返回非const引用,因此可以堆栈+=
。这有点尴尬和不寻常,看起来像这样:
string line = "text";
(line += mod) += "more text";