我想将随机排序数据写入文件。我正在使用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;
}
答案 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::length
或std::string::size
就是为了这个。如果可以myfile << vv;
,为什么要使用上述内容?我实际上甚至没有在上面的代码中使用std::string
。