尝试使用visual C ++将矢量内容打印到文本文件中

时间:2018-04-03 22:02:03

标签: c++ visual-c++ vector text-files

我试图习惯使用向量来存储信息,我需要将向量的内容写入文件。我的代码存储了具有可变宽度和高度的盒子内的像素信息。我试图通过在向量的每个位置放置数字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);
    }

我非常感谢我的代码的任何帮助或建议。谢谢。

1 个答案:

答案 0 :(得分:1)

您对resize()的来电会在您的媒介中添加vColMax*vLineMax*4个零。

然后push_back会添加一堆255值,而不会替换或删除零。

最后,您打印出第一个vColMax*vLineMax*4项,这些项是resize()中的零。