这是我目前的职能
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位数字。
答案 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,并计算并添加到每个地点的累计值。