C++中单字符转字符串的其他替代方法(替代string()构造函数)
C++中单字符转字符串的简便方法
先看你给出的代码片段:
string exp; // expression getline(cin, exp); stack<int> vs; // value stack (postfix evaluation) stack<string> infix; // infix stack (postfix conversion) stack<string> prefix; // prefix stack (postfix conversion) for (int i = 0; i < exp.length(); i++) { char ch = exp[i]; if (isdigit(ch)) { vs.push(ch - '0'); infix.push(string(1, ch)); prefix.push(string(1, ch)); } }
你提到想用更简便的方式替代string(1, ch)实现单字符转字符串,C++里确实有几种类似Javach + ""的简洁写法:
空字符串拼接法:
std::string{} + ch
利用空字符串对象重载的+运算符,自动将char转换为string,写法和Java的思路几乎一致,可读性强。初始化列表构造:
std::string{ch}
C++11及以后支持用初始化列表直接构造string,只需要用大括号包裹字符,是写法最紧凑的方式。字符串视图(临时场景):
std::string_view(&ch, 1)
如果你的场景只需要临时读取字符串内容、不需要修改字符串,用string_view更高效,不过要注意char的生命周期,避免引用已销毁的对象。
把这些方法替换到你的代码里,比如:
// 用初始化列表构造 infix.push(std::string{ch}); prefix.push(std::string{ch}); // 或者用空字符串拼接 infix.push(std::string{} + ch); prefix.push(std::string{} + ch);
内容的提问来源于stack exchange,提问作者codosopher
相关产品推荐
相关产品推荐

