C/C++

С++ ООП. Просьба исправить код

#include <iostream>
#include <string>

using namespace std;

int main() {
string filePath = "C:\WINDOWS\system32\mspaint.exe"; // задаем путь к файлу
string fileName = ""; // создаем пустую строку для имени файла

// Находим индекс последнего символа '' в строке
int lastSlashIndex = filePath.find_last_of("\");

// Если символ не найден, значит строка не содержит путь к файлу
if (lastSlashIndex != string::npos) {
// Находим индекс последнего символа '.' в строке
int lastDotIndex = filePath.find_last_of(".");

// Если символ не найден, значит строка не содержит расширение файла
if (lastDotIndex != string::npos) {
// Вырезаем из строки имя файла (без расширения)
fileName = filePath.substr(lastSlashIndex + 1, lastDotIndex - lastSlashIndex - 1);
}
}

cout << fileName << endl; // Выводим имя файла

return 0;
}
Олег Петров
Олег Петров
11 106
 #include    
#include

using namespace std;

int main() {
string filePath = "C:\\WINDOWS/system32/mspaint.exe"; // задаем путь к файлу
string fileName; // стринги и так пустые
auto it = filePath.rbegin();
bool was_point = false; //флаг удаления точки
for (; it != filePath.rend(); it++)
{
//удаление расширения файла если таковое присутствует
if (*it == '.' && !was_point) { fileName.clear(); was_point = true; continue; }
//выход при нахождении разделителя
if (*it == '/' || *it == '\\') break;
fileName.push_back(*it);
}
if (it == filePath.rend()) fileName = "File name is not correct."; else
reverse(fileName.begin(), fileName.end()); //перевернуть имя
cout
Александр Федулов
Александр Федулов
51 417
Лучший ответ
Исправленный код:
 #include   
#include

using namespace std;

int main() {
string filePath = "C:\\WINDOWS\\system32\\mspaint.exe"; // задаем путь к файлу
string fileName = ""; // создаем пустую строку для имени файла

// Находим индекс последнего символа '\' в строке
int lastSlashIndex = filePath.find_last_of("\\");

// Если символ не найден, значит строка не содержит путь к файлу
if (lastSlashIndex != string::npos) {
// Находим индекс последнего символа '.' в строке
int lastDotIndex = filePath.find_last_of(".");

// Если символ не найден, значит строка не содержит расширение файла
if (lastDotIndex != string::npos) {
// Вырезаем из строки имя файла (без расширения)
fileName = filePath.substr(lastSlashIndex + 1, lastDotIndex - lastSlashIndex - 1);
}
}

cout
Олег Петров Спаибо, друг!