可以使用std::string变量作为操作符的实参吗?



例如,如果我有:

#include <iostream>
using namespace std;
int main()
{
int b = 1;
int c = 2;
string a = "(b + c)";

cout << (4 * a) << "n";
return 0;
}

是否有可能将字符串a解释为字面上,好像代码说的是cout << (4 * (b + c)) << "n";?

No。c++不是(被设计成)解释型语言。

虽然理论上可以覆盖不同类型的操作符,但非常不建议覆盖不涉及您自己类型的操作符。从标准库中为std::string定义操作符重载将来可能会中断。这是个坏主意。

但是,假设您使用了自定义类型。您可以编写一个程序,将文本字符串解释为算术表达式。这种程序的核心是一个解析器。这当然是可能的,但是标准库没有为您提供这样的解析器。

此外,这样的解析器将无法在"b"和变量b。在程序运行时,它不知道用于编译程序的变量名。您必须使用某种形式的数据结构来指定这些信息。

注:您忘记包含定义std::string的头。

#include<string>
///...
auto a=std::to_string(b+c);
std::cout<<4*std::stoi(a)<<std::endl;

你可以只使用std::stringstd::stoi

最新更新