C++中如何创建文件和目录
如果是VC的话,文件操作如下:
文件打开:
char* pszFileName = "c:\\test\\myfile.dat";
CFile myFile;
CFileException fileException;
if ( !myFile.Open( pszFileName, CFile::modeCreate |
CFile::modeReadWrite, fileException ) )
{
TRACE( "Can't open file %s, error = %u\n",
pszFileName, fileException.m_cause );
}
文件读写:
char szBuffer[256];
UINT nActual = 0;
CFile myFile;
myFile.Write( szBuffer, sizeof( szBuffer ) );
myFile.Seek( 0, CFile::begin );
nActual = myFile.Read( szBuffer, sizeof( szBuffer ) );
关闭:
myFile.Close();
文件定位:
long offset = 1000; // 偏移量
long cpos; // 当前位置
cpos = myFile.Seek(offset,CFile::begin);
结果是cpos的值为1000
文件的查找
当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。
CString strFileTitle;
CFileFind finder;
BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab");
while(bWorking)
{
bWorking=finder.FindNextFile();
strFileTitle=finder.GetFileTitle();
}
如果你要进行的文件操作只是简单的读写整行的字符串,我建议你使用CStdioFile,用它来进行此类操作非常方便,如下例。
CStdioFile mFile;
CFileException mExcept;
mFile.Open( "d:\\temp\\aa.bat", CFile::modeWrite, mExcept);
CString string="I am a string.";
mFile.WriteString(string);
mFile.Close();
关于C语言的问题,高手进
#include stdio.h
#include stdlib.h
#include string.h
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
#define IN99v_SIZE 100 //存储空间初始分配量
#define INCREMENT 30 //存储空间分配增量
#define MAXLEN 100//迷宫包括外墙最大行列数目
typedef struct{ //迷宫中row行col列的位置
int row;
int col;
}PostType;
typedef struct{
int ord; //当前位置在路径上的序号
PostType seat;//当前坐标
int di; //往下一坐标的方向
}SElemType; //栈元素类型
typedef struct{
SElemType* base;//栈基址,构造前销毁后为空
SElemType* top;//栈顶
int stackSize; //栈容量
}Stack; //栈类型
Status InitStack(Stack S){ //构造空栈s
S.base=(SElemType*)malloc(IN99v_SIZE *sizeof(SElemType));
if(!S.base)
exit(OVERFLOW);//存储分配失败
S.top=S.base;
S.stackSize=IN99v_SIZE;
return OK;
}//InitStack
Status StackEmpty(Stack S){
//若s为空返回TRUE,否则返回FALSE
if(S.top==S.base)
return TRUE;
return FALSE;
}//StackEmpty
Status Push(Stack S,SElemType e){
//插入元素e为新的栈顶元素
if(S.top-S.base =S.stackSize){//栈满,加空间
S.base=(SElemType *)realloc(S.base,(S.stackSize+INCREMENT)*sizeof(SElemType));
if(!S.base)
exit(OVERFLOW); //存储分配失败
S.top=S.base+S.stackSize;
S.stackSize+=INCREMENT;}
*S.top++=e;
return OK;
}//push
Status Pop(Stack S,SElemType e){//若栈不空删除栈//顶元素用e返回并返回OK,否则返回ERROR
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;
}//Pop
Status DestroyStack(Stack S){//销毁栈S,
free(S.base);
S.top=S.base;
return OK;
}//DestroyStack..
typedef struct{
int row;
int col;
char adr[MAXLEN][MAXLEN];//可取' ''\001' '\002' '#'
}MazeType; //迷宫类型
Status InitMaze(MazeType maze){
//初始化迷宫若成功返回TRUE,否则返回FALSE
int m,n,i,j;
maze.row=0;
maze.col=0;
while(maze.row50 || maze.row5){
printf("请输入所要创建迷宫的行数:");
scanf("%d",maze.row); //迷宫行数
if(maze.row=50 || maze.row=5)
printf("行数必须是5-50之间的整数\n");
continue;
if(maze.row=50 maze.row=5)
break;}
while(maze.col50 || maze.col5){
printf("请输入所要创建迷宫的列数:");
scanf("%d",maze.col);
if(maze.col=50 || maze.col=5)
printf("列数必须是5-50之间的整数\n");
continue;
if(maze.col=50 maze.col=5)
break;}
for(i=0;i=maze.col+1;i++){//迷宫行外墙
maze.adr[0][i]='#';
maze.adr[maze.row+1][i]='#';}//for
for(i=0;i=maze.row+1;i++){//迷宫列外墙
maze.adr[i][0]='#';
maze.adr[i][maze.col+1]='#';}
for(i=1;i=maze.row;i++)
for(j=1;j=maze.col;j++)
maze.adr[i][j]=' ';//初始化迷宫
printf("下面请输入你的障碍坐标\n注:当设置好障碍坐标后,输入数字0 后结束。");
do{ printf("\n请输入障碍的横坐标: ");
scanf("%d",m);
if(m==0)break;
if(mmaze.row){
printf("输入的数不能超过最大行数\n");
continue;}
if(m0){
printf("输入的数不能比1小\n");
continue;}
printf("请输入障碍的纵坐标: ");
scanf("%d",n);
if(n==0)break;
if(nmaze.col){
printf("输入的数不能超过最大列数\n");
continue;}
if(n0){
printf("输入的数不能比1小\n");
continue;}
maze.adr[m][n]='#';//迷宫障碍用'#'标记
}while(m!=0||n!=0);//while
return OK;
}//InitMaze
Status Pass(MazeType maze,PostType curpos){
//当前位置可通则返回TURE,否则返回FALSE
if(maze.adr[curpos.row][curpos.col]==' ')//可通
return TRUE;
else
return FALSE;
}//Pass
Status FootPrint(MazeType maze,PostType curpos){
//若走过并且可通返回TRUE,否则返回FALSE
//在返回之前销毁栈S
maze.adr[curpos.row][curpos.col]='\001';//"\001"表示可通
return OK;
}//FootPrint
PostType NextPos(PostType curpos,int i){
//指示并返回下一位置的坐标
PostType cpos;
cpos=curpos;
switch(i){ //1.2.3.4分别表示东,南,西,北方向
case 1 : cpos.col+=1; break;
case 2 : cpos.row+=1; break;
case 3 : cpos.col-=1; break;
case 4 : cpos.row-=1; break;
default: exit(ERROR);}
return cpos;
}//Nextpos
Status MarkPrint(MazeType maze,PostType curpos){
//曾走过但不是通路标记并返回OK
maze.adr[curpos.row][curpos.col]='\002';//"\002"表示曾走过但不通
return OK;
}//MarkPrint
Status MazePath(MazeType maze,PostType start,PostType _end){
//若迷宫maze存在从入口start到_end的通道则求得一条存放在栈中
//并返回TRUE,否则返回FALSE
Stack S;
PostType curpos;
int curstep;//当前序号,1.2.3.4分别表示东,南,西,北方向
SElemType e;
InitStack(S);
curpos=start; //设置"当前位置"为"入口位置"
curstep=1; //探索第一步
do{
if(Pass(maze,curpos)){//当前位置可以通过,
//即是未曾走到过的通道
FootPrint(maze,curpos);//留下足迹
e.ord=curstep;
e.seat=curpos;
e.di=1;
Push(S,e); //加入路径
if(curpos.row==_end.row curpos.col==_end.col)
if(!DestroyStack(S))//销毁失败
exit(OVERFLOW);
else
return TRUE; //到达出口
else{
curpos=NextPos(curpos,1);
//下一位置是当前位置的东邻
curstep++; //探索下一步
}//else
}//if
else{ //当前位置不通
if(!StackEmpty(S)){
Pop(S,e);
while(e.di==4
!StackEmpty(S)){
MarkPrint(maze,e.seat);
Pop(S,e);
//留下不能通过的标记,并退一步
}//while
if(e.di 4){
e.di++;//换下一个方向探索
Push(S,e);
curpos=NextPos(e.seat,e.di);//设定当前位置是该
//新方向上的相邻
}//if
}//if
}//else
}while(!StackEmpty(S));
if(!DestroyStack(S))//销毁失败
exit(OVERFLOW);
else
return FALSE;
}//MazePath
void PrintMaze(MazeType maze){
//将标记路径信息的迷宫输出到终端(包括外墙)
int i,j;
printf("\n迷宫路径如下图所示:\n\n");
printf(" ");
for(i=0;i=maze.col+1;i++)//打印列数名
printf("%4d",i);
printf("\n\n");
for(i=0;i=maze.row+1;i++){
printf("%2d",i);//打印行名
for(j=0;j=maze.col+1;j++)
printf("%4c",maze.adr[i][j]);//输出迷宫//当前位置的标记
printf("\n\n");
}
}//PrintMaze
void main(){ //主函数
MazeType maze;
PostType start,_end;
char cmd;
do{ system("cls");
printf("##########################################################################\n");
printf("# #\n");
printf("# 迷宫求解 #\n");
printf("# #\n");
printf("# 姓名: 班级: 学号: #\n");
printf("# #\n");
printf("# #\n");
printf("# 欢迎使用 copy left #\n");
printf("# #\n");
printf("# #\n");
printf("##########################################################################\n");
if(!InitMaze(maze)){ //初始化并创建迷宫
printf("\nInitialization errors!!!\n");
exit(OVERFLOW); //初始化错误
}
do{ //输入迷宫入口坐标
printf("\n输入迷宫入口坐标: ");
scanf("%d%d",start.row,start.col);
if(start.rowmaze.row || start.row1|| start.colmaze.col || start.col1)
{ printf("\n入口错误!!!\n");
continue;}
}while(start.rowmaze.row || start.row1 || start.colmaze.col || start.col1);
do{ //输入迷宫出口坐标
printf("\n输入迷宫出口坐标: ");
scanf("%d%d",_end.row,_end.col);
if(_end.rowmaze.row || _end.row1 || _end.colmaze.col || _end.col1){
printf("\n出口错误!!!\n");
continue;}
}while(_end.rowmaze.row || _end.row1 || _end.colmaze.col || _end.col1);
if(!MazePath(maze,start,_end))//迷宫求解
printf("\n此路不通!!!\n");
else
PrintMaze(maze);//打印路径
printf("\n如果继续请输入y,退出请输入n: ");
scanf("%s",cmd);
}while(cmd=='y' || cmd=='Y');
}//main
迷宫求解问题用C++编写.
cpos是正规交易所吗
目前,中国政府尚未承认数字货币的法律地位。今年9月,央行、银监会和其他官方部门发布文件,禁止数字货币(代币、虚拟货币)在中国的交易和流通。因此,以比特币为代表的所谓“数字货币”是非法的,不能投资。技术只是一种科学方法。如果有人利用区块链进行非法集资等违法犯罪活动,必将受到法律制裁。从目前来看,几乎所有打着“区块链”旗号的投资项目都处于灰色地带。他们经常涉嫌诈骗、非法集资等违法犯罪活动。你必须保持警惕,不要被非法公司和人员的花言巧语所迷惑。
拓展资料:
CoinPOS (CPOS)是基于区块链的全球智能终端证券平台。CPOS交易节点就像我们传统的股票市场投资证券公司网点。未来,它们将遍布全球,成为区块链金融市场基础设施建设的关键环节。CoinPOS (CPOS)项目致力于利用区块链技术打造全球线下支付网络平台,并借助区块链技术打造区块链行业专业的智能终端“broker”,为用户提供线上到线下的整体解决方案。打造了移动智能终端CoinPOS经纪服务硬件、多资产数字钱包CPOSWallet等产品。通过智能硬件终端和冷热钱包,普通投资者可以轻松快捷地参与数字资产投资。
CPOS巨大的市场前景,逐渐吸引了越来越多的人参与,在全国各地逐渐建立起各种优质社区。强大的产品、庞大的共识群体、高品质的社区,为cpos打造生态场景奠定了坚实的基础,成为涨价的有力支撑,创造高品质的市场条件。
项目功能通过POS设备购买或销售加密货币;支持公用事业账单和其他离线加密货币支付;使用移动设备(如PayPal)进行点对点支付。对于那些不懂区块链甚至使用智能手机的老年人,CoinPOS也为他们提供了解决方案。CPOSPASS是一种多币卡,用于通过CoinPOS平台购买和出售合法和加密货币。CPOS卡还使用NFC和非接触式技术,通过卡中存储的加密货币进行支付。这些卡可以与移动数字钱包一起使用,也可以单独使用,也可以通过数字钱包用CPOSPASS卡给其他家庭成员充值。
求大神用Python解决下面这个。具体问题写在问题补充内
a = "aAsmr3idd4bgs7Dlsf9eAF"
b = list(filter(str.isalpha,a))
c = sorted(b,cmp=lambda x,y:1 if (x.upper()y.upper()) else -1)
print ''.join(c)
之前没看到要求5行内,现在四行搞定啦,其实还能缩到3行,不过影响美观,呵呵
我用vb作了个qq登陆框,登陆按钮怎么弄一样??
首先新建一个EXE工程,再在窗体上拖几个Label控件,看看Label的强大功能吧,原理就是利用Label来模拟一个按钮,但是首先要将Label控件的属性要调一下,
Name:LblBtn,
BorderStyle:1,
Appearance:0,
Alignment:2,
这样一个按钮的雏形就已经出来了,如果工程量很大,可以将多个Label控件的Name属性设为一样的,对于按钮的识别就要靠识别Index属性了,为了方便起见,在进入到代码编辑窗口,输入以下代码:
PrivateConstLBL_BACK_COLOR=HE0E0E0’正常时Label控件的背景色
PrivateConstLBL_WHEN_MOUSE_MOVE=HC0C0C0’鼠标移动时Label的背景色
PrivateConstLBL_WHEN_MOUSE_DOWN=H808080’鼠标按下时Label的背景色
再在Form的Load事件中输入以下内容
PrivateSubForm_Load()
DimCountAsInteger
ForCount=0To3’请将此出的3换成你的LblBtn数量的个数-1
LblBtn(Count).BackColor=LBL_BACK_COLOR’初始化LblBtn的背景
NextCount
EndSub
然后再在LblBtn的MouseMove和MouseDown事件中来搞定剩余部分:
PrivateSubLblBtn_MouseDown(IndexAsInteger,ButtonAsInteger, ShiftAsInteger,XAsSingle,YAsSingle)’当鼠标按在LblBtn上时
LblBtn(Index).BackColor=LBL_WHEN_MOUSE_DOWN’临时改变LblBtn背景颜色
EndSub
PrivateSubLblBtn_MouseMove(IndexAsInteger,ButtonAsInteger, ShiftAsInteger,XAsSingle,YAsSingle)’鼠标在LblBtn上面移动时触发该事件
DimCountAsInteger
DoEvents’暂时将系统控制权教给系统
IfButtonThenExitSub’如果按钮被按下就退出该过程
ForCount=0To3
IfCountIndexThen’如果按下的不是其它按钮
LblBtn(Index).BackColor=LBL_BACK_COLOR’将背景设为正常
Else
LblBtn(Index).BackColor=LBL_WHEN_MOUSE_MOVE’将背景设为鼠标移 动的背景
EndIf
NextCount
EndSub
PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
DimCountAsInteger
DoEvents
ForCount=0To3
LblBtn(Count).BackColor=LBL_BACKCOLOR’恢复背景
NextCount
End
本来利用Windows的消息系统来完成这一“艰巨”的任务最简单,可问题就来了,Label控件没有窗口句柄怎么办?可是此问题与题无关,写了会有骗稿费之:)
OK,Label控件就讲到这里,在来说说TextBox控件,
各位看关恐怕看惯了白颜色的背景,那么就换换颜色以养养俺们那和绵羊一样的眼睛(为什么说绵羊?俺也不知道),可是VB提供的RGB函数弄出来的颜色不是怎么好看,这里俺来教大家一个小Tip,RGB函数的Red,Green,Blue这三个参数若一样,则产生的颜色是灰度,当然越接近白颜色越好,但也不能让各位看不出来,俺建议TextBox的背景为RGB(235,235,235),各位还是实战一下,将一TextBox拖到窗体上,属性设置如下
Appearance0
BorderStyle1
MutilLineTrue
千万不要设置ScrollBars属性,否则会影响效果在Form的Load事件中初始化TextBox
DimbkColorAsLong
PrivateSubForm_Load()
bkColor=RGB(235,235,235)
Text1.BackColor=bkColor
EndSub
在Form和Text1的MouseMove事件中:PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
Text1.BorderStyle=0
EndSub
PrivateSubText1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
DoEvents
Text1.BorderStyle=1
EndSub
在按下F5试试是不是很Cool?
可能各位看关玩过石器时代,一定会对里面的TextBox的效果感到很爽,VB还不是可以做到,有焦点的控件可以使用SetFocus方法来为其设置焦点,可是一个窗体上如果控件太多了,一个一个的用SetFocus是不是太傻了?这一节的主角就是--------API函数,
首先声明:
PrivateTypePOINTAPI
xAsLong
yAsLong
EndType
PrivateDeclareFunctionGetCursorPosLib"user32"Alias"GetCursorPos"
(lpPointAsPOINTAPI)AsLongPrivateDeclareFunctionWindowFromPointLib"user32"Alias"WindowFrom
Point"(ByValxPointAsLong,ByValyPointAsLongAsLongPrivateDeclareFunctionSetFocusLib"user32"Alias"
SetFocus"(ByValhwndAsLong)AsLong
但是这里的SetFocus会和控件的SetFocus会搞混淆,改改吧,
PrivateDeclareFunctionnSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
只要Alias指向的接口是对的前面的函数名称简直就是摆设,在建立一个过程:
PublicFunctionsSetFocus()AsLong
DimCPosAsPOINTAPI,SuccessfullAsBoolean,hWndAsLong
DoEvents
Successfull=GetCursorPos(CPos)
IfNotSuccessfullThenExitSub’如果未成功则退出该过程
hWnd=WindowFromPoint(CPos.x,CPos.y)
sSetFocus=nSetFocus(hWnd)
EndSub
在窗体上放一个Timer控件,Interval属性设为100,就是0.1秒,在Timer1控件的Timer事件中填入sSetFocus,在运行一下看看,效果怎么样?
可是有的先生小姐要问了,TextBox难道就不能用ScrollBar吗?非也非也,选工程-部件-MicrosoftWindowsCommonControls-26.0(SP3)就是你的答案,至于卷动TextBox就去研究SendMessage函数吧,否则又有骗稿费之嫌,如果想作绿色软件,不想用控件,可以用俺前面讲到的Label控件,利用字体Webdings来模拟ScrollBar,需要注意的是,如果模拟ScrollBar,上下左右箭头分别是5,6,3,4,别忘了把字体设为Webdings
再来讲讲窗体的美化,其实将BorderStyle属性设为0就是很好的2D美化;)可是,这样一来,问题又来了,怎么办?凡事都要请API来帮忙,这里需要两个API,一下是该API的声明:
PublicDeclareFunctionReleaseCaptureLib"user32"Alias"ReleaseCapture"()AsLong注释:这个API是用来解下鼠标的追踪器,关于他的过多用法以及详细介绍可以写信向俺咨询,还有PublicDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong’这个该不要俺多介绍了吧
PublicConstHTCAPTION=2’代表窗体的标题区
PublicConstWM_NCLBUTTONDOWN=HA1’表示非工作区左键按下
原理很简单,卸下鼠标追踪器后向Form发送一个移动窗体的消息,其实做到这一点的方法很多,但俺个人认为这一种最简单,添加一个过程:
PublicSubMoveForm(hWndAsLong)
DoEvents
ReleaseCapture
SendMessagehWnd,WM_NCLBUTTONDOWN,HTCAPTION,0
EndSub
在Form的MouseMove事件中:
PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=vbLeftButtonThenMoveFormhWnd’如果按下鼠标左键就移动窗体
EndSub
台下的这位小姐又纳闷了,可是光秃秃的窗体没有了标题栏也不好看,俺要向这为小姐推荐俺的东东-ActiveX控件,ToolSign,需要的人可以写信给俺联系,该控件需要在代码编辑区域内添加一下代码:
’一下声明是用在ToolSign的AutoQuit属性的
PublicConstEXIT_FORCE=2’注意,在VB中运行的时候如果选用此退出方式,VB也会退出
PublicConstEXIT_MESSAGE=1’由操作系统发送关闭消息
PublicConstEXIT_CUSTOM=Not(EXIT_FORCEOrEXIT_MESSAGE)’自定义
将其注册后在部件栏中把e-DogkidStudioToolsSign打钩,添加到工具箱中,双击加入到窗体中,在Form的Load事件中添加一下初始化代码:
PrivateSubForm_Load()
WithSign1
.AutoQuit=EXIT_CUSTOM
.ParentsHWND=hWnd’填了此属性可以直接用ToolSign来移动窗体而不需要前面的代码
EndWith
EndSub
Sign1的Click事件
PrivateSubSign1_Click()
End’关闭程序
EndSub
在Form的Resize事件中添加一下代码:
PrivateSubForm_Resize()
Sign1.Width=Width
EndSub
如果想让窗体可以改变大小,可以修改一下属性
Caption""
BorderStyle2或5
ControlBoxFalse
不知道各位看关见过爆炸试的窗体没有?,没有见过可以从俺要另外一个俺自己的ActiveXDLL,我的那个东东其实是给我的Software作运行库的,各位若不嫌弃,可以用用,注册后在工程-引用-e-DogkidRuntimeLibrary
然后在窗体Load事件中输入:
PrivateSubForm_Load()
DimSystemAse_Dogkid_Runtime_Library.System
SetSystem=Newe_Dogkid_Runtime_Library.System
Show
System.BoomIthDC,60,Width,Height,Left,Top
SetSystem=Nothing
EndSub
对于cpos怎么使用和cposx5的总结分享本篇到此就结束了,不知你从中学到你需要的知识点没 ?如果还想了解更多这方面的内容,记得收藏关注本站后续更新。
标签: maze
②文章观点仅代表原作者本人不代表本站立场,并不完全代表本站赞同其观点和对其真实性负责。
③文章版权归原作者所有,部分转载文章仅为传播更多信息、受益服务用户之目的,如信息标记有误,请联系站长修正。
④本站一律禁止以任何方式发布或转载任何违法违规的相关信息,如发现本站上有涉嫌侵权/违规及任何不妥的内容,请第一时间反馈。发送邮件到 88667178@qq.com,经核实立即修正或删除。