CCFCSP 201604 3 路徑解析

2021-07-30 08:42:16 字數 980 閱讀 6443

試題編號: 201604-3

試題名稱: 路徑解析

時間限制: 1.0s

記憶體限制: 256.0mb

//參考了別人的部落格

本題主要考察對字串的修改操作。可以用string儲存路徑資訊,再使用string的類函式進行操作。

首先讀入當前目錄,要注意在之後的p行路徑中的相對路徑表示的是相對初始當前目錄的路徑,而不是上一次的結果目錄。如果讀入的是相對路徑,可以直接把初始目錄和相對路徑拼接後的路徑當做需要正規化的路徑。

然後對路徑修改。字串中子串或字元的刪除可以直接用erase函式實現。首先刪除字串中重複的「/」。然後考慮」//」形式,這個符號不會對之前和之後的路徑產生影響,所以直接刪除。再考慮」/*/」形式,代表回到上一目錄,所以處理時刪除這一段以及上一段的目錄,(如果在它之前是根目錄,只需刪除這一段)。如果最後的目錄不是根目錄,且結尾帶有」/」,則需要進行刪除。

#include 

#include

using

namespace

std;

int main()

if (s.size() == 0)

//刪除多餘的"/"

while ((p = s.find("//")) != -1)

s.erase(p, count - 1);

}//刪除"/*/"

while ((p = s.find("/./")) != -1)

//處理"/**/"

while ((p = s.find("/../")) != -1)

else

}//刪除末尾的"/"

if(s.length() > 1 && s[s.length()-1] == '/')

s.erase(s.length() - 1);

cout

<< s << endl;

}return

0;}

CCF CSP 201604 3 路徑解析

在作業系統中,資料通常以檔案的形式儲存在檔案系統中。檔案系統一般採用層次化的組織形式,由目錄 或者資料夾 和檔案構成,形成一棵樹的形狀。檔案有內容,用於儲存資料。目錄是容器,可包含檔案或其他目錄。同乙個目錄下的所有檔案和目錄的名字各不相同,不同目錄下可以有名字相同的檔案或目錄。為了指定檔案系統中的某...

201604 3 路徑解析

問題描述 在作業系統中,資料通常以檔案的形式儲存在檔案系統中。檔案系統一般採用層次化的組織形式,由目錄 或者資料夾 和檔案構成,形成一棵樹的形狀。檔案有內容,用於儲存資料。目錄是容器,可包含檔案或其他目錄。同乙個目錄下的所有檔案和目錄的名字各不相同,不同目錄下可以有名字相同的檔案或目錄。為了指定檔案...

201604 3 路徑解析

問題描述 在作業系統中,資料通常以檔案的形式儲存在檔案系統中。檔案系統一般採用層次化的組織形式,由目錄 或者資料夾 和檔案構成,形成一棵樹的形狀。檔案有內容,用於儲存資料。目錄是容器,可包含檔案或其他目錄。同乙個目錄下的所有檔案和目錄的名字各不相同,不同目錄下可以有名字相同的檔案或目錄。為了指定檔案...