【发布时间】:2021-11-09 13:14:51
【问题描述】:
我正在尝试 C++ 中的不同类型转换运算符。 在我对 reinterpret_cast 的理解中,它将不类型转换为根本不同的类型。 但是下面的代码会抛出这个错误“从 'char*' 转换为 'int' 失去精度 [-fpermissive]”。
#include <iostream>
#include <typeinfo>
using namespace std;
int main()
{
int i;
char *p = "This is a string";
i = reinterpret_cast<int>(p);
cout << i;
return 0;
}
错误是什么意思?
【问题讨论】:
-
尽可能避免强制转换。
-
char *p = "This is a string";->const char *p = "This is a string"; -
std::/*u*/intptr_t似乎比int更合适。 -
std::string str{"这是一个字符串"};
-
这个问题不是“如何将 std::string 转换为 int?”的重复问题。这里没有提到 std::string ,但最重要的是,OP 并没有尝试将字符串转换为 int ;相反,他们试图了解 reinterpret_cast 的工作原理。
标签: c++ casting reinterpret-cast