2

这是我目前的功能

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)或返回它。

(在头文件中声明的第 1 行、第 2 行和第 3 行字符)

第 3 行是 16 位长。

4

2 回答 2

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:接受 aconst char*并将其内容转换为long long int. 如果 endptr 不是NULLstrtoll()则将第一个无效字符的地址存储在*endptr. 您还可base以为数字指定 。

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

当然,您可以代替atoi您使用atoll长长的东西:)

于 2014-02-19T13:46:02.350 回答
0

从字符串的左端逐个字符读取 as 并计算并添加到每个位置值的累积值。

于 2015-03-03T14:58:37.987 回答