如何将 unsigned long 转换为 char*。
我正在执行以下 for 循环
for (unsigned long i = 1; i< 7;i++)
{
callAMethod(5,i);
}
方法定义如下
callAMethod(int, const char*)
当我这样做时,我收到以下错误:
invalid conversion from `unsigned long' to `const char*'
我该怎么做呢?
如何将 unsigned long 转换为 char*。
我正在执行以下 for 循环
for (unsigned long i = 1; i< 7;i++)
{
callAMethod(5,i);
}
方法定义如下
callAMethod(int, const char*)
当我这样做时,我收到以下错误:
invalid conversion from `unsigned long' to `const char*'
我该怎么做呢?
旧 C 指针算法:
for (unsigned long i = 1; i< 7;i++)
{
callAMethod(5, (const char*)(&i));
}
但是这样你只会得到长的 8 个字节中的一个字节。你想得到long的字符串表示吗?您可以使用 STL 并获取 str()。
“const char*”表示“字符的地址”。你将传递它的值 1 <= n < 7。
您可以要求编译器通过强制转换来假装它们是有效的指向字符的值
callAMethod(5, reinterpret_cast<const char*>(i));
但是我冒昧地猜测您的应用程序在尝试读取地址“1”处的内存以查找字符时会崩溃
看起来您的“callAMethod”需要一个 C 风格的字符串,它是一个任意的字符序列,字符串结尾由值 0 的字符表示:
const char hello[6] = { 'h', 'e', 'l', 'l', 'o', 0 };
相当于 const char* hello = "hello";
(当你像在 C/C++ 中那样用引号写一个字符串时,编译器会自动在存储的字符串的末尾添加一个 0 字节)。
通常,当您将字符串传递给函数时,指纹是“const char*”
所以你真正想知道的是“我如何从一个长值中创建一个字符串”,答案是“printf”。
char str[20];
for (unsigned long i = 1; i < 7; ++i) {
#ifdef _MSC_VER
sprintf_f(str, "%u", i);
#else
snprintf(str, sizeof(str), "%u", i);
#endif
callAMethod(5, str);
}