这是我目前的函数
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 不是NULL
,strtoll()
*endptr
中存储第一个无效字符的地址。您还可以指定号码的base
。
你做了(atoi(line3));
但atoi
也期望const char*
所以我认为line3
一定是一个std::string
(由于你使用它的方式),这就是为什么我在黑暗中用c_str()
来获取字符串的实际数据,而不是对象本身。
当然,您可以使用atoll
来代替atoi
来处理长篇大论的东西:)
从字符串的左端读取字符,计算并添加到按位累积值。