六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 151|回复: 0

C++ 入门问答收集

[复制链接]

升级  74.2%

2220

主题

2220

主题

2220

主题

榜眼

Rank: 8Rank: 8

积分
6710
 楼主| 发表于 2013-2-5 02:16:19 | 显示全部楼层 |阅读模式
编程工具: vc++6
问题: 在vc中,有个类型转换 _T()是什么意思?字符串转换成什么类型。最好能举个例子。
回答:
Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。_T一般同字常数相关,如_T("Hello")。如果你编译一个程序为ANSI方式,_T实际不起任何作用。而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串以UNICODE方式保存。_T和_L的区别在于,_L不管你是以什么方式编译,一律以以UNICODE方式保存。
------------------------------------------------
请问TCHAR,CHAR,LPSTR,LPCSTR,char这几个数据类型有何不同,该如何使用? 回答:
char是C语言标准数据类型,字符型,至于由几个字节组成通常由编译器决定,一般一个字节。Windows为了消除各编译器的差别,重新定义了一些数据类型,你提到了另外几个类型都是这样。CHAR为单字节字符。还有个WCHAR为Unicode字符,即不论中英文,每个字有两个字节组成。如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。在当前版本LPCSTR和LPSTR没区别,即以零结尾的字符串指针,相当于CHAR *。

--------------------------------------------------
编程工具: VC++6
问题: 请问如何使用VC++实现将一个文件改名呢?
水平: 中级
回答:
如果想使用标准C语言函数,就使用rename函数。
如果要使用API函数,就使用MoveFile函数。
----------------------------------------------------
操作系统: NT4.0 Windows 98 NT5.0
编程工具: VC
问题: 如何获得应用程序当前路径,我使用如下函数:CDocument::GetPathName().但返回值为空。
回答:
使用API的GetCurrentDirectory函数可以获得当前目录。
----------------------------------------------
编程工具: vc++6.0
问题: 请问如何在VC所编的程序中运行其它可执行文件在WINDOWS中产生的快捷方式(即*.LNK文件)?
回答:
使用ShellExecute函数,如:
ShellExecute(0, "open",
"C:\\WIN98\\Desktop\\Acrobat Reader 4.0.lnk", NULL, NULL, SW_SHOWNORMAL);
-----------------------------------------------
编程工具: VC
问题: 请问如何知道一个目录是否已经存在,请给出具体的例子好吗?如D:\CDR\Te目录,如何用winapi来实现检查这个目录是否存在! 回答:
可以这样做:
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile("d:\\cdr\\te", &fd);
if ((hFind != INVALID_HANDLE_VALUE) && (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
// 存在
}
FindClose(hFind);
------------------------------------------------
BC5.0,VC6.0

如何解决下面的问题?文件系统包括目录和文件,目录下包括任意数目子目录和文件。我希望删除文件和目录。对删除方法将进行递归删除。
回答:
你不一定要进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。如果你一定要递归删除,可以参考微软的Knowledge Base的文章:“Q185476 OWTO: Search Directories to Find or List Files”


回答:
可以这样做:
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile("d:\\cdr\\te", &fd);
if ((hFind != INVALID_HANDLE_VALUE) && (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
// 存在
}
FindClose(hFind);
------------------------------------------------
BC5.0,VC6.0

如何解决下面的问题?文件系统包括目录和文件,目录下包括任意数目子目录和文件。我希望删除文件和目录。对删除方法将进行递归删除。
回答:
你不一定要进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。如果你一定要递归删除,可以参考微软的Knowledge Base的文章:“Q185476 OWTO: Search Directories to Find or List Files”


回答:
char是C语言标准数据类型,字符型,至于由几个字节组成通常由编译器决定,一般一个字节。Windows为了消除各编译器的差别,重新定义了一些数据类型,你提到了另外几个类型都是这样。CHAR为单字节字符。还有个WCHAR为Unicode字符,即不论中英文,每个字有两个字节组成。如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。在当前版本LPCSTR和LPSTR没区别,即以零结尾的字符串指针,相当于CHAR *。

--------------------------------------------------
编程工具: VC++6
问题: 请问如何使用VC++实现将一个文件改名呢?
水平: 中级
回答:
如果想使用标准C语言函数,就使用rename函数。
如果要使用API函数,就使用MoveFile函数。
----------------------------------------------------
操作系统: NT4.0 Windows 98 NT5.0
编程工具: VC
问题: 如何获得应用程序当前路径,我使用如下函数:CDocument::GetPathName().但返回值为空。
回答:
使用API的GetCurrentDirectory函数可以获得当前目录。
----------------------------------------------
编程工具: vc++6.0
问题: 请问如何在VC所编的程序中运行其它可执行文件在WINDOWS中产生的快捷方式(即*.LNK文件)?
回答:
使用ShellExecute函数,如:
ShellExecute(0, "open",
"C:\\WIN98\\Desktop\\Acrobat Reader 4.0.lnk", NULL, NULL, SW_SHOWNORMAL);
-----------------------------------------------
编程工具: VC
问题: 请问如何知道一个目录是否已经存在,请给出具体的例子好吗?如D:\CDR\Te目录,如何用winapi来实现检查这个目录是否存在! 回答:
可以这样做:
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile("d:\\cdr\\te", &fd);
if ((hFind != INVALID_HANDLE_VALUE) && (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
// 存在
}
FindClose(hFind);
------------------------------------------------
BC5.0,VC6.0

如何解决下面的问题?文件系统包括目录和文件,目录下包括任意数目子目录和文件。我希望删除文件和目录。对删除方法将进行递归删除。
回答:
你不一定要进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。如果你一定要递归删除,可以参考微软的Knowledge Base的文章:“Q185476 OWTO: Search Directories to Find or List Files”


回答:
可以这样做:
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile("d:\\cdr\\te", &fd);
if ((hFind != INVALID_HANDLE_VALUE) && (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
// 存在
}
FindClose(hFind);
------------------------------------------------
BC5.0,VC6.0

如何解决下面的问题?文件系统包括目录和文件,目录下包括任意数目子目录和文件。我希望删除文件和目录。对删除方法将进行递归删除。
回答:
你不一定要进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。如果你一定要递归删除,可以参考微软的Knowledge Base的文章:“Q185476 OWTO: Search Directories to Find or List Files”
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表