每次我用这段代码编写 loadChar(charVariable,positonOfCharacter)
时:
bool LoadEntity::loadChar(char * outputChar,int position)
{
ifstream file(nameOfFile.c_str());
if(!(file.good()))
return false;
file.seekg(position);
if(file.get())
{
* outputChar = file.get();
return true;
}
else
return false;
}`
我收到此错误:从“char”到“char*”的无效转换
如果函数运行正确,代码应该返回 bool 并将 char outputChar 的值更改为 int 位置文件中的字符。是什么导致了这个问题?
最佳答案
问题:
char charVariable;
...
loadChar(charVariable, positonOfCharacter);
在这里,您试图传递一个 char
值而不是函数期望的指针(即 char*
)。这是非法的。
简单的解决方案:
调用函数时使用变量的地址:
loadChar(&charVariable, positonOfCharacter); // note the &
替代方案:
如果您对指针不太熟悉,您也可以更改函数的签名并使用引用而不是指针。引用允许您更改原始变量的值:
bool LoadEntity::loadChar(char& outputChar, int position) // note the &
{
...
outputChar = file.get(); // note: no * anymore
...
}
无关问题:
您对 get()
的使用有问题.以下将引导您读取文件两次但忽略第一次输入:
if(file.get())
{
* outputChar = file.get();
...
}
此外,如果没有可用的字符,if 可能仍然会执行并返回 ture,因为无法保证 that the function will return 0 .
偏好:
if(file.get(*outputChar))
{
return true;
}
别担心:如果没有字符不能从文件中读取,输出字符将不会改变。
关于c++ - 调用函数时从 'char' 到 'char*' 的无效转换 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53684271/