【发布时间】:2020-07-17 02:49:49
【问题描述】:
我正在尝试拆分文件的代码
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
int dim,k=1;
double x,y,x1,y1;
vector<double> AUX1[0],AUX2[0];
string file="ne_1417.dat",number;
ifstream IN(file);
while(IN >> x >> y)
{
AUX1.push_back(x);
AUX2.push_back(y);
}
IN.close();
dim=AUX1.size();
number=to_string(k);
ofstream OUT(number+file);
for(int i=0;i<dim;i++)
{
OUT<<AUX1[i]<<" "<<AUX2[i]<<endl;
if((AUX1[i+1]-AUX1[i])>50.){
k++;
number=to_string(k);
OUT.close();
ofstream OUT(number+file);
}
}
return 0;
}
我得到了我想要的文件数量,但只有第一个文件充满了数据,其他的都是空的,我不明白为什么 =( 我需要帮助,请
【问题讨论】:
-
此问题中显示的代码无法满足 stackoverflow.com 对minimal reproducible example 的要求,因此这里的任何人都不太可能确定问题所在。这个问题必须是edited 以显示一个最小示例,不超过一两页代码(“最小”部分),任何人都可以剪切/粘贴、编译、运行和重现所描述的问题(“可重现”部分)完全如图所示(这包括任何辅助信息,例如程序的输入)。请参阅How to Ask 了解更多信息。
-
你的任务是什么?为什么要实现自己的
Vector类而不是使用std::vector?你的Vector类是否实现了边界检查,当你越界时它会做什么(就像你对AUX1(i+1)所做的那样,假设你使用函数调用运算符而不是更自然的索引运算符进行索引[])? -
对不起,我是新手。我使用我的
Vector课程只是为了我的家庭作业。它没有任何特殊的东西。 -
vector<double> AUX1[0],AUX2[0];不会像你认为的那样做。查看向量的使用情况。您正在声明长度为零的向量数组。
标签: c++ string file split fstream