Shlwapi.dll 应用系列

本文通过示例介绍了如何使用 Windows API 中的 PathCanonicalize 函数来规范化路径,展示了不同类型的路径字符串在经过函数处理后的结果,包括处理相对路径、点和双点等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <windows.h>
#include <iostream>
#include "Shlwapi.h"

using namespace std;

int main()
{
   // Path_1 destination buffer.
   char buffer_1[MAX_PATH] = "JustABufferToHoldTheCanonicalizedPathForAnExample";
   char *lpStr1;
   lpStr1 = buffer_1;

   // Path_2 to be Canonicalized.
   char buffer_2[ ] = "A://name_1//.//name_2//..//name_3";
   char *lpStr2;
   lpStr2 = buffer_2;

   // Path_3 to be Canonicalized.
   char buffer_3[ ] = "A://name_1//..//name_2//.//name_3";
   char *lpStr3;
   lpStr3 = buffer_3;

   // Path_4 to be Canonicalized.
   char buffer_4[ ] = "A://name_1//name_2//.//name_3//..//name_4";
   char *lpStr4;
   lpStr4 = buffer_4;

   // Path_5 to be Canonicalized.
   char buffer_5[ ] = "A://name_1//.//name_2//.//name_3//..//name_4//..";
   char *lpStr5;
   lpStr5 = buffer_5;

   // Path_6 to be Canonicalized.
   char buffer_6[ ] = "C://..";
   char *lpStr6;
   lpStr6 = buffer_6;

   cout << "The un-canonicalized path 2 is : " << lpStr2
        << "/nThe return value is            : "
        << PathCanonicalize(lpStr1,lpStr2)
        << "/nThe canonicalized path 1 is    : " << lpStr1 << endl;

   cout << "/nThe un-canonicalized path 3 is : " << lpStr3
        << "/nThe return value is            : "
        << PathCanonicalize(lpStr1,lpStr3)
        << "/nThe canonicalized path 1 is    : " << lpStr1 << endl;

   cout << "/nThe un-canonicalized path 4 is : " << lpStr4
        << "/nThe return value is            : "
        << PathCanonicalize(lpStr1,lpStr4)
        << "/nThe canonicalized path 1 is    : " << lpStr1 << endl;

   cout << "/nThe un-canonicalized path 5 is : " << lpStr5
        << "/nThe return value is            : "
        << PathCanonicalize(lpStr1,lpStr5)
        << "/nThe canonicalized path 1 is    : " << lpStr1 << endl;

   cout << "/nThe un-canonicalized path 6 is : " << lpStr6
        << "/nThe return value is            : "
        << PathCanonicalize(lpStr1,lpStr6)
        << "/nThe canonicalized path 1 is    : " << lpStr1 << endl;
}
OUTPUT:
---------
The un-canonicalized path 2 is : A:/name_1/./name_2/../name_3
The return value is            : 1
The canonicalized path 1 is    : A:/name_1/name_3

The un-canonicalized path 3 is : A:/name_1/../name_2/./name_3
The return value is            : 1
The canonicalized path 1 is    : A:/name_2/name_3

The un-canonicalized path 4 is : A:/name_1/name_2/./name_3/../name_4
The return value is            : 1
The canonicalized path 1 is    : A:/name_1/name_2/name_4

The un-canonicalized path 5 is : A:/name_1/./name_2/./name_3/../name_4/..
The return value is            : 1
The canonicalized path 1 is    : A:/name_1/name_2

The un-canonicalized path 6 is : C:/..
The return value is            : 1
The canonicalized path 1 is    : C:/

 

 

版本 shlwapi.dll 4.7

头文件 shlwapi.h

shlwapi.lib

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值