鱼C论坛

 找回密码
 立即注册
查看: 845|回复: 4

[已解决]c++文件写入操作

[复制链接]
发表于 2023-7-29 15:31:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
   ofstream outf;
            outf.open("./FirstStepData.txt",ios::app);
            outf<< copyNo <<G4endl;
            outf.close();
目前结果长这样,这个文件一次只存一个数据,然后就被关闭了,但是我希望数据是空一格,然继续同行的存,然后数据到一定数量的时候
再换行,怎么控制啊,我数据太多了,不能这么竖着存
捕获.JPG
最佳答案
2023-7-29 15:31:18
你可以使用一个计数器来记录已经写入的数据数量,并在达到一定数量时换行。下面是修改后的C++代码,实现你的需求:
#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ofstream outf;
    outf.open("./FirstStepData.txt", ios::app);

    // 假设你希望每行存储的数据数量为5
    const int dataPerLine = 5;

    // 已经写入的数据数量计数器
    int dataCount = 0;

    // 假设你有一个数据数组,假设为dataArr
    int dataArr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 这里只是示例数据

    for (int i = 0; i < sizeof(dataArr) / sizeof(dataArr[0]); i++) {
        outf << dataArr[ i] << " "; // 写入数据并在数据之间加上空格

        // 增加数据计数
        dataCount++;

        // 如果达到了每行存储的数量,就换行,并重置计数器
        if (dataCount == dataPerLine) {
            outf << endl;
            dataCount = 0;
        }
    }

    outf.close();
    return 0;
}

在这个示例中,我们引入了一个  dataPerLine  变量来表示每行存储的数据数量,你可以根据实际需求调整这个值。然后使用一个循环来遍历数据数组,并在写入数据后增加计数器  dataCount ,当计数器等于  dataPerLine  时,我们会在文件中换行,并重置计数器。

请注意,在实际使用时,你需要根据你的数据来源来适当修改示例中的数据数组  dataArr  部分。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-29 15:31:18 | 显示全部楼层    本楼为最佳答案   
你可以使用一个计数器来记录已经写入的数据数量,并在达到一定数量时换行。下面是修改后的C++代码,实现你的需求:
#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ofstream outf;
    outf.open("./FirstStepData.txt", ios::app);

    // 假设你希望每行存储的数据数量为5
    const int dataPerLine = 5;

    // 已经写入的数据数量计数器
    int dataCount = 0;

    // 假设你有一个数据数组,假设为dataArr
    int dataArr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 这里只是示例数据

    for (int i = 0; i < sizeof(dataArr) / sizeof(dataArr[0]); i++) {
        outf << dataArr[ i] << " "; // 写入数据并在数据之间加上空格

        // 增加数据计数
        dataCount++;

        // 如果达到了每行存储的数量,就换行,并重置计数器
        if (dataCount == dataPerLine) {
            outf << endl;
            dataCount = 0;
        }
    }

    outf.close();
    return 0;
}

在这个示例中,我们引入了一个  dataPerLine  变量来表示每行存储的数据数量,你可以根据实际需求调整这个值。然后使用一个循环来遍历数据数组,并在写入数据后增加计数器  dataCount ,当计数器等于  dataPerLine  时,我们会在文件中换行,并重置计数器。

请注意,在实际使用时,你需要根据你的数据来源来适当修改示例中的数据数组  dataArr  部分。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 15:31:21 | 显示全部楼层
您可以使用控制流语句和计数器来控制数据的输出格式。下面是一个示例代码段来实现您描述的需求:
#include <iostream>
#include <fstream>

int main() {
    std::ofstream outf;
    outf.open("./FirstStepData.txt", std::ios::app);

    // 定义数据数量和换行间隔
    int dataCount = 0;
    int newlineInterval = 5;  // 每五个数据换行

    for (int i = 0; i < 10; ++i) {  // 假设有10个数据需要写入
        // 写入数据
        outf << i << " ";

        // 增加数据计数器
        dataCount++;

        // 判断是否达到换行间隔
        if (dataCount % newlineInterval == 0) {
            outf << std::endl;  // 换行
        }
    }

    outf.close();

    return 0;
}

在这个示例中,我们使用dataCount变量来跟踪已经写入文件的数据数量,并使用取模运算符%来检查是否达到了换行间隔。如果达到了换行间隔,我们就在文件中添加一个换行符std::endl

在上述代码中,我们假设有10个数据需要写入,并且设置每5个数据换行一次。您可以根据实际情况调整这些值。

请注意,这只是一个简单的示例代码,仅供参考。实际应用中,您可能需要根据自己的需求进行适当的修改。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-29 15:44:56 | 显示全部楼层
isdkz 发表于 2023-7-29 15:31
你可以使用一个计数器来记录已经写入的数据数量,并在达到一定数量时换行。下面是修改后的C++代码,实现你 ...

我的数据不是这种for循环存进去的,每次运行,都是一个类调用另一个类,所以每次只存一个数据,存完就关闭了,不像for循环这样好控制
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 16:16:14 | 显示全部楼层
猪猪虾 发表于 2023-7-29 15:44
我的数据不是这种for循环存进去的,每次运行,都是一个类调用另一个类,所以每次只存一个数据,存完就关 ...

建议发一下源代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 11:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表