我通常不用Visual C++工作,但我想知道我能做些什麼來加速這個邏輯......並且如果有更好的方法來做到這一點。在Visual C++中執行此操作的更好方法是什麼?
我有這樣內容的map<wstring, wstring>
:
\Device\CdRom0\, E:\
\Device\CdRom1\, F:\
\Device\HarddiskVolume1\,
\Device\HarddiskVolume4\, C:\
\Device\HarddiskVolume5\, D:\
而且我有一個巨大的具有以下格式的字符串列表:
L"\\Device\\HarddiskVolume4\\Users\\User\\Documents\\Visual Studio 2013\\Projects\\FileLocker\\FileLocker\\bin\\Debug\\Test.txt";
我的整個目的是獲取字符串中以上格式,使用該映射作爲查找類型,並將這些字符串轉換爲以下格式(將上述字符串轉換爲驅動器路徑的示例):
L"C:\\Users\\User\\Documents\\Visual Studio 2013\\Projects\\FileLocker\\FileLocker\\bin\\Debug\\Test.txt";
我目前做的方式是(每串)如下:
std::wstring test = ...
for (map<wstring, wstring>::iterator i = volumes.begin(); i != volumes.end(); ++i)
{
if (test.find((*i).first.c_str()) == 0)
{
test = test.replace(0, wcslen((*i).first.c_str()), (*i).second.c_str());
}
}
但這裏有很多的字符串,並且性能真的可以一擊!有什麼更好的方法來執行此查找並分配到手頭的字符串?
地圖鍵總是由斜槓分隔的兩個路徑元素嗎? – 2014-10-29 01:31:08
我不確定;在我的系統上是的,但我不確定是否總是這樣,因爲我正在使用一些未公開的Windows API來生成這些音量字符串......我不確定什麼格式的音量字符串總是應該被表示。 – Alexandru 2014-10-29 01:39:48