我来自node.js,我想知道是否有办法在C ++中执行此操作。什么是C ++相当于:
var string = "hello";
string = return_int(string); //function returns an integer
// at this point the variable string is an integer
所以在C ++中我想做点什么......
int return_int(std::string string){
//do stuff here
return 7; //return some int
}
int main(){
std::string string{"hello"};
string = return_int(string); //an easy and performant way to make this happen?
}
我正在使用JSON,我需要枚举一些字符串。我确实知道我可以将return_int()
的返回值分配给另一个变量,但我想知道是否可以将字符串中的变量类型重新分配给int,以便学习和阅读。
答案 0 :(得分:4)
C ++语言本身没有任何内容允许这样做。变量无法改变其类型。但是,您可以使用允许其数据动态更改类型的包装类,例如boost::any
或boost::variant
(C ++ 17添加std::any
和std::variant
):< / p>
#include <boost/any.hpp>
int main(){
boost::any s = std::string("hello");
// s now holds a string
s = return_int(boost::any_cast<std::string>(s));
// s now holds an int
}
#include <boost/variant.hpp>
#include <boost/variant/get.hpp>
int main(){
boost::variant<int, std::string> s("hello");
// s now holds a string
s = return_int(boost::get<std::string>(s));
// s now holds an int
}
答案 1 :(得分:2)
这是不可能的。 C ++是一种静态类型语言,即类型不能改变。这不适用于汽车或任何其他方式。您将不得不为int使用不同的变量。在C ++ 11及更高版本中,您可以这样做:
std::string str = "hello";
auto i = return_int(str);
或者:
int i = return_int(str);
无论如何,调用一个整数&#34; string&#34;如果你问我,有点奇怪。