Как извлечь часть строки в C ++ - PullRequest
1 голос
/ 07 августа 2011

Чтобы извлечь часть строки в данной строке:

Данная строка:

D:\AB554P_Itr23\ModelDir\AB554P_approximation_NodeData.dat Read 3/18/2010

Мне нужно извлечь только имя файла AB554P_approximation_NodeData.dat.Я использую CodeGear RAD Studio C ++ Builder.Спасибо:)

Ответы [ 6 ]

4 голосов
/ 07 августа 2011

Как насчет Boost :: Файловая система ...

string name = path( "D:\\AB554P_Itr23\\ModelDir\\AB554P_approximation_NodeData.dat").filename()
4 голосов
/ 07 августа 2011

Вы смотрели в string :: substr

3 голосов
/ 07 августа 2011

Функция RTL ExtractFileName() извлечет имя файла из пути.

Как именно разделить 3 поля в вашем примере, очень сильно зависит от правил формирования этой строки текста. Как это отграничено? Разграничен пробелами? Если так, как вы избегаете пробелов в пути к файлу? Пока вы не укажете эту информацию, эта часть вашего вопроса остается без ответа.

1 голос
/ 08 августа 2011
  1. Здесь C ++ Parse Split Delimited String Вы получаете основную функцию.
  2. Чтобы удалить деталь после пробела, используйте:

string s = "D: \ AB554P_Itr23 \ ModelDir \ AB554P_approximation_NodeData.dat Read 3/18/2010";

size_t pos;
pos = s.find ("");
s.erase (pos);

Теперь вызовите split для '\', чтобы разделить оставшуюся часть.

1 голос
/ 07 августа 2011

Для обработки путей Windows используйте функции пути Windows API , такие как PathFindFileName.

Приветствия & hth.,

0 голосов
/ 07 августа 2011

Возможно, вы захотите изучить библиотеку регулярных выражений, например, Boost Regex .

...