2016-06-10 2 views
-2

Я использую контейнер WDL_String для управления строкой в ​​рамках C++ Framework. Мне нужно разбить строку (разделитель \) и получить последнее вхождение.Как вернуть положение последнего символа?

можно использовать нативный метод:

mFilePath.DeleteSub(mLastOccPosition, mFilePath.GetLength()); 

заменял строку, но я не знаю, как поймать mLastOccPosition.

Так что, если у меня есть эта строка:

D:\\Google Drive\\My Files\\Test.zip 

Мне нужно вернуть Test.zip. Каков наилучший способ сделать это на C++?

+0

см. Это http://stackoverflow.com/questions/14265581/parse-split-a-string-in-c-using-string-delimiter-standard-c –

+0

@ F.bernal: Я не использую ' string' – markzzz

+0

use const char * Get() const, а затем создать свою std-строку –

ответ

1

Если s является примером std::string, то s.find_last_of('\\') сделает это.

Он возвращает std::string::npos, если его не найти.

Затем вы можете использовать std::string::substr, чтобы извлечь бит, в котором вы нуждаетесь.

+0

Как я уже сказал, я не работаю со строкой. Но WDL_String. Я могу получить 'char *' из WDL_String. – markzzz

+0

Ну, вы просили наилучшего способа, и это, вероятно, написать 'std :: string s (/ * функция, которая получает char * * /)', и перейти оттуда. Нет смысла строить код извлечения с нуля. – Bathsheba

+0

Приятно ли подобное? (Мне не нужна ссылка на строку): '(string (mFilePath.Get())). Find_last_of ('\\')' – markzzz

Смежные вопросы