c++ - 调用函数时从 'char' 到 'char*' 的无效转换 (c++)

标签 c++ pointers char type-conversion

每次我用这段代码编写 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/

相关文章:

从 vector 中删除时出现 C++ 段错误

c - typedef struct 让指针成为下一个指向节点是什么意思?

c - 释放 char* 数据不起作用

c++ - 函数调用中char[]和char*的区别

c++ - 当我将 char 数组发送到输入参数为字符串的函数时会发生什么?

c++ - 继承的非模板类的范围问题(模板基类、非模板派生类)

c++ - C++中用户定义的行、列输出

c - 使用指针更新结构中的二维整数数组

c++ - 如何在 Windows 控制台中禁用用户选择

c++ - 对数组的引用