use*_*499 2 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;
}
Run Code Online (Sandbox Code Playgroud)
似乎返回大部分数字,但不是全部,并以混乱的格式.
不确定我的错误在于读取行(getline)还是转换它(atoi)或返回它.
(在头文件中声明的line1,line2和line3 char)
第3行是16位数.
我认为long long int不应该atoi,但是strtoll:
long long int strtoll(const char *nptr, char **endptr, int base);
Run Code Online (Sandbox Code Playgroud)
假设line3是一个字符串,您可以将其用作:
char* endptr = NULL;
user3 = strtoll(line3.c_str(), &endptr, 10);
Run Code Online (Sandbox Code Playgroud)
和标记你标记它,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很长的东西:)