gpt4 book ai didi

c++ - 将字符串转换为 long long int

转载 作者:行者123 更新时间:2023-11-27 23:08:06 26 4
gpt4 key购买 nike

我想从文本文件中读取第 3 行作为 string,将其转换为 long long int,然后返回该值。

文本文件第3行的数据是1234567890123456

long long int File::Getline3(int user1, int user3)
{
std::string filename = std::to_string(user1);

std::ifstream fin(filename + ".txt");
fin.getline (line1, 5);
fin.getline (line2, 5);
fin.getline (line3, 20);
fin.close();

// convert line 3 to a string called str
const char *line3;
std::string str(line3);

// convert str to long long int called user3
long long int strtoll(const char *nptr, char **endptr, int base);
char* endptr = NULL;
user3 = strtoll(str.c_str(), &endptr, 10);

return user3;
}

评论是为了展示我认为我在做什么,但我可能错了(我是指针的新手)。

当我尝试构建我的程序时出现“ Unresolved external ”错误。

最佳答案

long long int strtoll(const char *nptr, char **endptr, int base);

这一行声明一个函数。这意味着当您在几行下方调用 strtoll 时,您将调用该函数,因为它是最明显的候选者。但是,您从未定义它。

相反,您打算调用 std::strtoll,它(由标准库)定义的,并且可以通过您假定的 using 命名空间找到std 指令,如果您不通过错误地声明您自己的这个不存在的同名函数来隐藏它。 :)

简单地删除多余的声明:

// convert str to long long int called user3
char* endptr = NULL;
user3 = strtoll(str.c_str(), &endptr, 10);

您的 const char* line3 也有类似的问题,您在函数内部声明它,从不分配任何内容,然后从中构造一个字符串。那是未定义的;指针未初始化。假设您有一些 line3 数据成员(连同您的 line1line2),您再次隐藏它具有同名的局部变量。

最后,如果您只是写入并返回它,则按值传递 user3 是完全没有意义的。删除该参数。

将所有这些放在一起,您的代码可能应该如下所示:

// convert line3 to long long int
char* endptr = NULL;
return strtoll(line3, &endptr, 10);

简而言之,不要那么高兴!

关于c++ - 将字符串转换为 long long int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21887274/

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