我试图习惯使用向量来存储信息,我需要将向量的内容写入文件。我的代码存储了具有可变宽度和高度的盒子内的像素信息。我试图通过在向量的每个位置放置数字255来测试打印向量。当我运行我的代码并创建文件时,我只有0' s。有什么我想念的吗?这是我的代码:
#include <iostream>
#include <string>
#include <math.h>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>
#include <strstream>
#include<vector>
using namespace std;
vector<int> ROIPixels;
G_BoxWidth = 250;
G_BoxHeight = 100;
int TopBox = G_BoxY;
int LeftBox = G_BoxX;
int RightBox = G_BoxX + G_BoxWidth - 1;
int BottomBox = G_BoxY + G_BoxHeight - 1;
int vColMax = G_BoxWidth;
int vLineMax = G_BoxHeight;
ROIPixels.clear();
ROIPixels.resize(vColMax*vLineMax*4, 0); //I'm multiplying by 4 because
//i'm using a bitmap
iCol = LeftBox;
while (iCol <= RightBox)
{
iLine = TopBox;
while (iLine <= BottomBox)
{
ROIPixels.push_back(255);
iLine++;
}
iCol++;
}
if (CaptureImage_Flag == 2)
{
//## Save arrImage1 to file "arrImage2.dat"
string OutFileName = "ROIPixels.dat";
ofstream OutFile(OutFileName.c_str(), ios::out);
if (!OutFile)
{
cerr << "Error: " << OutFileName << "could not be created."
<< std::endl;
exit(1);
}
for (unsigned int ii = 0; ii < vColMax*vLineMax * 4; ii++)
{
if (ii / 4. == (int)(ii / 4.))
{
OutFile << (int)(ROIPixels[ii]) << endl;
}
}
OutFile.close();
exit(1);
}
我非常感谢我的代码的任何帮助或建议。谢谢。
答案 0 :(得分:1)
您对resize()
的来电会在您的媒介中添加vColMax*vLineMax*4
个零。
然后push_back
会添加一堆255
值,而不会替换或删除零。
最后,您打印出第一个vColMax*vLineMax*4
项,这些项是resize()
中的零。