c++: long long int 不会写入文件

标签 c++ file unsigned-long-long-int

<分区>

旨在让用户更新其详细信息的小程序。

在 get 函数和 get 函数中初始化的所有变量都全部在调用任何 set 函数函数之前调用:

int File::Getline1()
{
    std::string filename = std::to_string(user1);

    std::ifstream fin(filename + ".txt");
    fin.getline (line1, 5);
    fin.close();

    user1 = (atoi(line1));

    return user1;
}

int File::Getline2()
{
    std::string filename = std::to_string(user1);

    std::ifstream fin(filename + ".txt");
    fin.getline (line1, 5);
    fin.getline (line2, 5);
    fin.close();

    user2 = (atoi(line2));

    return user2;
 }

long long int File::Getline3()
{
    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();

    char* endptr = NULL;
    return strtoll(line3, &endptr, 10);
}

int File::Getline4()
{
    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.getline (line4, 5);
    fin.close();

    user4 = (atoi(line4));

    return user4;
}

调用哪些set函数取决于其他地方的一系列if语句,在if语句之后调用SetFile()。

如果调用 Setline3_4,所有内容 都会正确写入文件。但是,如果调用 Setline1 或 Setline2,所有内容都会正确写入文件除了 user3,它被写为“-3689348814741910324”,但是 user1、user2 和 user4 都被正确写入。

我不明白为什么 (注意:所有用户变量都是整数,除了 user3 是一个 long long int - 我想问题可能出在这里?)

void File::Setline1()
{
    user5 = user1;
    filename = std::to_string(user5);
    remove((filename + ".txt").c_str());

    std::cout << "Enter Line 1: ";
    std::cin >> user1;
}

void File::Setline2()
{
    std::cout << "Deposit (can be 0): ";
    std::cin >> deposit;
    std::cout << "\nWithdraw (can be 0): ";
    std::cin >> withdraw;

    user2 = ((user2 + deposit) - withdraw);
}

void File::Setline3_4()
{
    std::cout << "Card Number: ";
    std::cin >> user3;

    std::cout << "Card Expiry date: ";
    std::cin >> user4;
}

void File::Setfile()
{   
    std::string filename = std::to_string(user1);

    std::ofstream fout(filename + ".txt");
    fout << user1 << std::endl << user2 << std::endl << user3 << std::endl << user4 << std::endl;
    fout.close();
}

最佳答案

因为user3没有初始化。因此,它包含一些垃圾值(value)。只需初始化它以避免打印垃圾值。

long long user3 = 0 ; // where you have declared user3 in the program.

关于c++: long long int 不会写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21986802/

相关文章:

regex - Glob 匹配 2 个目录中的所有图像?

C 如何从无符号整数中检索精确的 double 值(精度)

c++ - 让应用程序拥有 CPU 和 GPU 计算后端的最佳方式是什么

c++ - 使用 QList<MyObject*> 调用 setContextProperty()

c++ - 在 QML 场景中显示内存中的网格

cocoa-touch - 在 iOS 上解析 64 位无符号整数

Java相当于unsigned long long?

c++ - 绘制 2D map 坐标到 OpenGL 3D 投影

java - OutputStreamWriter.append 不将文本附加到文本文件 Android 编程

c++ - 如何获取文件夹的 ACL