coproc coproc - 1 year ago 80
C++ Question

C++ string equivalent for strrchr

Using C strings I would write the following code to get the file name from a file path:

#include <string.h>

const char* filePath = "dir1\\dir2\\filename"; // example
// extract file name (including extension)
const char* fileName = strrchr(progPath, '\\');
if (fileName)
fileName = filePath;

How to do the same with C++ strings? (i.e. using
#include <string>

Answer Source

The closest equivalent is rfind:

#include <string>

std::string filePath = "dir1\\dir2\\filename"; // example
// extract file name (including extension)
std::string::size_type filePos = filePath.rfind('\\');
if (filePos != std::string::npos)
  filePos = 0;
std::string fileName = filePath.substr(filePos);

Note that rfind returns an index into the string (or npos), not a pointer.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download