| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 410 人关注过本帖
标题:请教各位关于程序改写
只看楼主 加入收藏
cfanfan
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-1-27
收藏
 问题点数:0 回复次数:0 
请教各位关于程序改写

请教各位朋友,我这里的程序想改写,就是把main函数中的东西通过class方法实现,我费劲想了很久,没有好的思路,请教各位帮助,感谢!
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

/*** New Data Types ***/
typedef unsigned char BYTE;

int main(int argc, char* argv[])
/**************************************************************************************************
Arguments:
argv[1]: input file name
argv[2]: output file name
**************************************************************************************************/
{
ifstream infile; /* input file */
ofstream outfile_R;
ofstream outfile_G; /* output files */
ofstream outfile_B;
char inFileName[128]; /* input file name */
char outFileName_R[128];
char outFileName_G[128]; /* output file name */
char outFileName_B[128];
int width; /* width of input source */
int height; /* height of input source */
int Npixels, maxValue, i;
BYTE *pRGB;
BYTE *pR, *pG, *pB;
char buf[16];
int bufIndex;

// read the arguments
if(argc == 5)
{
strcpy(inFileName, argv[1]);
strcpy(outFileName_R, argv[2]);
strcpy(outFileName_G, argv[3]);
strcpy(outFileName_B, argv[4]);
}
else
{
cout<<"PPM(p6) converts to PGM(p5)\n";
cout<<"input Filename: ";
cin>>inFileName;
cout<<"Output Filename_R: ";
cin>>outFileName_R;
cout<<"Output Filename_G: ";
cin>>outFileName_G;
cout<<"Output Filename_B: ";
cin>>outFileName_B;
}

/* open input/output file */
infile.open(inFileName, ios::binary);
outfile_R.open(outFileName_R, ios::binary);
outfile_G.open(outFileName_G, ios::binary);
outfile_B.open(outFileName_B, ios::binary);

/* check input file */
if(!infile)
{
cout<<"Cannot open input file "<< inFileName<<endl;
return 1;
}

infile.read(buf, 2); // get the magic number
buf[2]='\0';

if(buf[0] == 'P' && buf[1] == '6'){
infile.read(buf, 1);
while(isspace(buf[0])){ // Skip white space(s)
infile.read(buf,1);
}

if(buf[0] == '#') { // Skip the comment line
while(buf[0] != '\n'){ // search end of line
infile.read(buf,1);
}
while(isspace(buf[0])){ // Skip white space(s)
infile.read(buf,1);
}
}

// get width
bufIndex = 0;
while(bufIndex < 15 && !isspace(buf[bufIndex])){
bufIndex++;
infile.read(buf+bufIndex, 1);
}
buf[bufIndex] = NULL; // null terminated string
width = atoi(buf);

// get height
infile.read(buf,1);
while(isspace(buf[0])){ // Skip white space(s)
infile.read(buf,1);
}
bufIndex = 0;
while(bufIndex < 15 && !isspace(buf[bufIndex])){
bufIndex++;
infile.read(buf+bufIndex, 1);
}
buf[bufIndex] = NULL; // null terminated string
height = atoi(buf);

// get max value
infile.read(buf,1);
while(isspace(buf[0])){ // Skip white space(s)
infile.read(buf,1);
}
bufIndex = 0;
while(bufIndex < 15 && !isspace(buf[bufIndex])){
bufIndex++;
infile.read(buf+bufIndex, 1);
}
buf[bufIndex] = NULL; // null terminated string
maxValue = atoi(buf);

if (maxValue == 255) { // 255 is the only type this program reads
Npixels = width * height;
pRGB = new BYTE [3*Npixels];
pR = new BYTE [Npixels];
pG = new BYTE [Npixels];
pB = new BYTE [Npixels];
infile.read(reinterpret_cast<char *>(pRGB), 3*Npixels);
outfile_R << "P5" << endl;
outfile_R << width << " " << height << endl;
outfile_R << maxValue << endl;
outfile_G << "P5" << endl;
outfile_G << width << " " << height << endl;
outfile_G << maxValue << endl;
outfile_B << "P5" << endl;
outfile_B << width << " " << height << endl;
outfile_B << maxValue << endl;
for (i=0; i < Npixels; i++){
pR[i] = pRGB[i*3];
pG[i] = pRGB[i*3+1];
pB[i] = pRGB[i*3+2];
}
outfile_R.write(reinterpret_cast<char *>(pR), Npixels);
outfile_G.write(reinterpret_cast<char *>(pG), Npixels);
outfile_B.write(reinterpret_cast<char *>(pB), Npixels);
}
else {
cout << "Error: wrong MaxGray value -- 255 \n";
width = height = 0;
}
}
else {
cout << "Error: wrong MagicValue -- P6 \n";
width = height = 0;
}

/* Delete the pointers */
delete [] pRGB;
delete [] pR;
delete [] pG;
delete [] pB;

/* Close file */
outfile_R.close();
outfile_G.close();
outfile_B.close();
infile.close();

return 0;
}

搜索更多相关主题的帖子: 朋友 include file 
2006-01-27 03:58
快速回复:请教各位关于程序改写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018194 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved