用c ++写入txt文件

时间:2015-12-03 23:03:37

标签: c++ g++

我想将随机排序数据写入文件。我正在使用g ++,但在运行程序后,没有数据保存到文件中。

这是代码:

#include <string>
// basic file operations
#include <stdlib.h>
#include <iostream>
#include <fstream>
using namespace std;

int main() {
    int ra;
    int pp = 0;
    ofstream myfile("fi21.txt");
    myfile.open("fi21.txt");

    for(int j = 0; j < 10; j++)
    {
        for(int i = 0; i < 10; i++)
        {
            ra = (rand()) + pp;
            pp = ra;

            std::string vv;
            vv = "1,";
            vv += i;
            vv += ",";
            vv += ra;
            vv += "\n";

            // myfile << vv;
            myfile.write(vv.c_str(), sizeof(vv));
        }
    }

    //  myfile.close();
    return 0;
}

1 个答案:

答案 0 :(得分:0)

您的代码应该/看起来像这样:

#include <string>
#include <stdlib.h>
#include <iostream>
#include <fstream>
using namespace std;

int main() {
    int ra;
    int pp = 0;
    ofstream myfile("fi21.txt"); // This already opens the file, no need to call open

    for(int j = 0; j < 10; j++)
    {
        for(int i = 0; i < 10; i++)
        {
            ra = rand() + pp;
            pp = ra;

            // This will concatenate the strings and integers.
            // std::string::operator+= on the other hand, will convert
            // integers to chars. Is that what you want?
            myfile << "1," << i << "," << ra << "\n";
        }
    }

    return 0;
}

这个多余的电话是主要问题,但也请注意你的尝试:

myfile.write(vv.c_str(), sizeof(vv));

有错误 - sizeof(vv)是堆栈中std::string占用的字节数,而不是它的长度。 std::string::lengthstd::string::size就是为了这个。如果可以myfile << vv;,为什么要使用上述内容?我实际上甚至没有在上面的代码中使用std::string