gpt4 book ai didi

c++ - 从返回 int 的函数中获取 char 的正确方法?

转载 作者:搜寻专家 更新时间:2023-10-31 00:18:05 24 4
gpt4 key购买 nike

我正在使用一个文件系统库,我正在尝试创建一个 readline 函数。

int al_fgetc(ALLEGRO_FILE *f)

Introduced in 5.0.0

Read and return next byte in the given file. Returns EOF on end of file or if an error occurred.

这是我从库中使用的函数。我想要做的是 += 如果它是 != EOF 即 -1,则将结果 char 转换为 std 字符串。我只是不确定是否需要对其进行转换以获得正确的结果。这样的事情会做吗:

bool File::readLine( std::string& buff )
{
if(eof() || !isOpen())
{
return false;
}
buff = "";
int c = 0;
while(c = al_fgetc(m_file) != EOF && c != '\n')
{
buff += (char)c;
}
return buff.length() > 0;
}

我要从文件中读取 utf-8,所以我需要确保它能正常工作。

谢谢

最佳答案

是的,这会起作用,除非您需要一组额外的括号,因为 != 运算符的优先级高于 = 运算符:

while((c = al_fgetc(m_file)) != EOF && c != '\n')
...

fgetc 返回 int 而不是 char 的唯一原因是有 257 个可能的返回值:所有 256 个可能的字节,或者 EOF,表示文件中没有更多数据。它将始终返回 0-255 或 EOF,因此在测试后将返回值转换为 charunsigned char 是安全的它用于 EOF

关于c++ - 从返回 int 的函数中获取 char 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11637666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com