每次我用以下代码写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;
}`
我收到此错误:invalid conversion from 'char' to 'char*
如果函数正确运行,代码应该返回bool并将char outputChar的值更改为int位置文件中的字符。是什么原因导致这个问题?
答案 0 :(得分:0)
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;
}
不要担心:如果无法从文件中读取任何char,则不会更改输出char。