C++ 从文件中读取字符,转换为长整型



这是我目前的函数

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 位数字。

我认为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 不是NULLstrtoll() *endptr 中存储第一个无效字符的地址。您还可以指定号码的base

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

当然,您可以使用atoll来代替atoi来处理长篇大论的东西:)

从字符串的左端读取字符,计算并添加到按位累积值。

最新更新