C++ 入门问答收集

来源:互联网 发布:如何建立损益矩阵 编辑:程序博客网 时间:2024/04/27 19:00
   编程工具: 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”。