c ++从文件中读取char,转换为long long int

时间:2014-02-19 13:42:21

标签: c++ file atoi unsigned-long-long-int

这是我目前的职能

long long int File::Getline3(int user1, long long 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();

user3 = (atoi(line3));

return user3;
}

似乎可以返回大部分数字,但不是全部,并且格式混乱。

不确定我的错误在于读取行(getline)还是转换它(atoi)或返回它。

(在头文件中声明的line1,line2和line3 char)

第3行是16位数字。

2 个答案:

答案 0 :(得分:5)

我认为long long int不应该是atoi,而是strtoll

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

假设line3是一个字符串,您可以将它用作:

char* endptr = NULL;
user3 = strtoll(line3.c_str(), &endptr, 10);

并且您将其标记为c++,您也可以使用:http://www.cplusplus.com/reference/string/stoll/

评论后

修改strtoll需要const char*并将其内容转换为long long int。如果endptr不是NULL,则strtoll()会在*endptr中存储第一个无效字符的地址。您还可以为数字指定base

您执行了(atoi(line3));,但atoi也期望const char*,所以我认为line3必须是std::string(由于您使用它的方式)这就是为什么我用c_str()在黑暗中拍摄以获取字符串的实际数据,而不是对象本身..

而不是atoi您可以使用课程atoll作为长篇文章:)

答案 1 :(得分:0)

从字符串的左端读取字符为char,并计算并添加到每个地点的累计值。