从矢量数组制作平面文件
Making a flat file from vector array
我的计划是在两列中制作一个平面文件,为此我启动了两个向量数组。两个矢量数组将位于平面文件的两列中。我认为我遇到的问题是在平面文件的列中填充矢量元素。我填写的方式错了吗?
outFile << vec1[i] << "t" << vec2[i] << endl;
#include <fstream>
#include <vector>
using namespace std;
//int main()
void ffile()
{
std::ofstream ofs;
ofstream outFile;
outFile.open("flatFile.dat");
vector<int> vec1{ 10, 20 };
vector<int> vec2{ 0, 20, 30 };
for (int i=0; i<=3;i++)
{
outFile << vec1[i] << "t" << vec2[i] << endl;
}
}
更新的问题: 我有两个矢量大小不同的矢量。如果我使用运行代码的大矢量的大小会有什么问题吗?
另一件事是,在平面文件中我没有看到两列,而是只看到一列和来自矢量 vec2[i] 的条目。如何在 vec1 的第一列和 vec2 的第二列中同时包含这两个条目?
C++不允许从经过最后一个元素的向量读取。句点。如果使用at
方法,则会得到out_of_range
异常,并且使用[]
运算符,您只会遇到未定义的行为。
这意味着您必须检查矢量的大小。您的代码可以变成:
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
//int main()
void ffile()
{
// std::ofstream ofs; // unused
ofstream outFile;
outFile.open("flatFile.dat");
vector<int> vec1{ 10, 20 };
vector<int> vec2{ 0, 20, 30 };
// use the sizes of both vectors to compute the loop limit
for (unsigned i = 0; i <= std::max(vec1.size(), vec2.size()); i++)
{
if (i < vec1.size()) outFile << vec1[i]; // only output actual values
outFile << "t";
if (i < vec2.size()) outFile << vec2[i];
outFile << endl;
}
}
此代码应提供类似于以下内容的文本文件:
0 0
20 20
30
(在我的测试中确实如此...
相关文章:
- 如何将内容数组写入文本文件?
- C++将文本文件中的数据读取到结构数组中
- 将值从二维数组输出到文本文件
- C++数据文件、数组和计算赋值
- 如何拆分文件中.txt字母并使用c ++使用数组进行扑克?
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 如何从txt文件中读取多个不同长度的数组?
- 保存/加载大量短数组到二进制文件
- 从二进制文件中读取整数数组
- 如何在 C++ 中将文件中的逗号分隔数字读取到数组中?
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- C++编程从外部文本文件定义数组大小
- 使用矢量将文本文件中的输入存储到 2D 数组中
- 如何将文本文件的特定行读取到 int 类型的数组中C++?
- 使用 stbi_write_png,如何将 0 和 1 的矩形字节数组转换为单色 png 文件?
- 将系数存储在头文件的数组中("does not name a type"错误)
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- 从矢量数组制作平面文件
- 如何使用QJSONARRAY在QT5(C )中解析JSON文件(数组)
- 从文件/数组C++聚合数据