CPP是程序设计语言C++的另一种书写形衡纳式。
它是CPlusPlus的简称。是继C语言之后又一种计算机编程语言,C++编程语言同时支持所有的C语言语法。C++和C相似,但C是面向过程的程序设计语言,而做搜C++是面向对象的程序设计语言,不过C++语言保持了对C语言的兼容,也就说是在C++程序可以不用修改的插入C语言代码。
cpp是用C++语言编写的源代码文件的后缀名。它对类的强大支持可以使它编写出更优质的程序。
基本的思想是,先检查当前目录下有多少种类型的源文件,比如.cpp,.c,.cc,.java等都属于不同类型的源文件,然后采用_finddata_t结构体表征不同类型的文燃搭件,通过_findfirst和_findnext函数一一进行匹配,直到全部找到为止。再分别打开这些文件,山带并打开同名的文件加上.txt后缀,将源文件读入到文本文件当中,至此完成。
main.cpp
#include "stdafx.h"
#include "FileTran.h"
#include "ListFile.h"
#include<iostream>
#include<windows.h>
using namespace std
int _tmain(int argc, _TCHAR* argv[])
{
try{
FileTran fileTran
ListFile listFile
listFile.listFiles()
printf("listfile\n")
unsigned int num=listFile.getNum()
printf("num=%d\n",num)
unsigned int i=0
while(i<num){
cout<<listFile.getFile(i)<<endl
if(fileTran.openFile(listFile.getFile(i))){
fileTran.handleFile()
i++
if(i==8)break
}
}
} catch(...){
printf("something is wrong!\n")
}
std::cout<<"--------done"<<std::endl
Sleep(2000)
return 0
}
登录后复制
FileTran.cpp
#include "StdAfx.h"
#include "FileTran.h"
#include <cstdio>
#include <string>
#include<iostream>
using std::ios_base
using std::string
using std::getline
FileTran::FileTran(void)
{
}
FileTran::~FileTran(void)
{
close()
}
bool FileTran::openFile(const char* filename)
{
finFile.open(filename,ios_base::in|ios_base::binary)
if(!finFile.is_open()){
printf("can not open the file,please check it out!\n")
throw "open error"
}
else{
this->filename=filename
printf("File opened\n")
return true
}
}
void FileTran::close()
{
}
void FileTran::handleFile()
{
string tmpname=string(filename)+string(".txt"皮唯拿)
if(finFile.is_open()){
foutFile.open(tmpname.c_str(),ios_base::out|ios_base::binary)
if(!foutFile.is_open()){
throw "something is wrong"
}
}
string str
while(!finFile.eof()){
std::getline(finFile,str)
foutFile<<str<<std::endl
}
finFile.close()
foutFile.close()
}
登录后复制
FileTran.h
#ifndef _FILETRAN_
#define _FILETRAN_
#include<fstream>
using std::ifstream
using std::ofstream
class FileTran
{
public:
FileTran(void)
~FileTran(void)
public:
bool openFile(const char*)
void handleFile()
private:
void close()
private:
const char* filename
ifstream finFile
ofstream foutFile
}
#endif //file tran
登录后复制
ListFile.cpp
#include "StdAfx.h"
#include "ListFile.h"
#include<iostream>
#include<fstream>
#include<io.h>
#include<windows.h>
#include<tchar.h>
ListFile::ListFile(void)
{
}
ListFile::~ListFile(void)
{
}
unsigned int ListFile::listFiles()
{
unsigned int cnt=0
char buf[SIZEFILE*2]
printf("Please enter all sorts of files you wanna transfer:")
while(EOF==scanf("%d",&kindsFiles)){
printf("enter is wrong!\n")
}
printf("Please enter the regulations of files,for example: \"*.c\" means all .c files would be listed!\n")
while(EOF!=scanf("%s",regs[cnt++])){
if(cnt==kindsFiles) break
}
cnt=0
while(cnt!=kindsFiles){
struct _finddata_t files
long handle=_findfirst(regs[cnt++],&files)
if(-1==handle){
printf("can not match the files!\n")
while(true)
exit(-1)
}
string tmp=string(files.name)
filesList.push_back(tmp)
while(!_findnext(handle,&files)){
tmp=string(files.name)
filesList.push_back(tmp)
nums=filesList.size()
return nums
void ListFile::disFiles()
list<string>::iterator listPtr=filesList.begin()
for(int i=0i<numsi++,listPtr++)
strcpy(allFiles[i],listPtr->c_str
char* ListFile::getFile(unsigned int n)
disFiles()
return allFiles[n]
unsigned int ListFile::getNum
return nums
}
登录后复制
ListFile.h
#ifndef _LISTFILE_
#define _LISTFILE_
#include<cstdio>
#include<string>
#include<list>
#define SIZEFILE 80
#define NUMFILE 80
using std::string
using std::list
class ListFile
{
public:
ListFile(void)
~ListFile(void)
private:
unsigned int kindsFiles
char regs[NUMFILE][SIZEFILE]
list<string>filesList
char allFiles[NUMFILE][SIZEFILE]
unsigned int nums
public:
unsigned int listFiles()
void disFiles()
char* getFile(unsigned int)
unsigned int getNum()
}
#endif //list file
登录后复制
stdafx.cpp
#include "stdafx.h"
登录后复制
stdafx.h
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
登录后复制
targetver.h
#pragma once
// 包括 SDKDDKVer.h 将定义可用的最高版本的 Windows 平台。
// 如果要为以前的 Windows 平台生成应用程序,请包括 WinSDKVer.h,并将
// WIN32_WINNT 宏设置为要支持的平台,然后再包括 SDKDDKVer.h。
#include <SDKDDKVer.h>
登录后复制
在visual studio 2010版及以上版本上编译,可生成.exe文件,将这个.exe文件和需要转换的源代码文件放到同一个目录中,打开.exe文件按照提示进行 *** 作即可!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)