我有以下内容:
int main() {
std::string ss;
std::cin >> ss;
const char* foo = "literal";
const char* r = ss.length() > 10 ? foo : ss.c_str();
std::cout << someMagicFunction(r) << std::endl;
}
我想确定变量r是否是运行时的字符串文字。是否可能(没有花费这么长时间,例如10ns)?我在Linux上。
提前致谢!
答案 0 :(得分:1)
不,你不能以便携的方式说出来。
而且const
也无济于事。在C中,例如"foo"
的类型,比如char[4]
类型,在某些情况下可以衰减到char*
指针,即使字符数组也是如此只读。
答案 1 :(得分:0)
你可以使用重载,你会确定变量,但是void function(char *r)
可能会收到一个文字:
可能是文字:
void function(const char* r);
当然,它不是文字:
void function(char *r);