Если проблема заключается в дополнительном времени компиляции и раздувании бинарного размера, полученном путем компиляции .h как части всех используемых им .cpp-модулей, во многих случаях то, что вы можете сделать, - это сделать класс шаблона опустившимся из не-шаблонного базовый класс для не зависящих от типа частей интерфейса, и что базовый класс может иметь свою реализацию в файле .cpp.
FileInfo f = new FileInfo(path);
string drive = Path.GetPathRoot(f.FullName);
Это возвратит "C:\". Это - действительно единственный другой путь.
Ничто неправильно с небольшим строковым парсингом :-)
FullPath.Substring(0,1);
Ну, есть еще вот это:
FileInfo file = new FileInfo(path);
DriveInfo drive = new DriveInfo(file.Directory.Root.FullName);
И эй, почему бы не метод расширения?
public static DriveInfo GetDriveInfo(this FileInfo file)
{
return new DriveInfo(file.Directory.Root.FullName);
}
Тогда вы могли бы просто сделать:
DriveInfo drive = new FileInfo(path).GetDriveInfo();