Учитывая следующее:
for( std::string line; getline( input, line ); )
{
CString strFind = line.c_str();
int n = strFind.ReverseFind( '\\' );
CString s = CString( strFind,n );
cout << s << endl;
// m_Path.push_back( line.c_str() );
}
Он читает конфигурацию .ini, и на этом .ini у меня есть строка:
C: \ Downloads \ Insanity \ Program \ 7. World.exe
эта строка добавлена к vector<CString>
,
Моя проблемаint n = strFind.ReverseFind( '\\\' );
находит строку pos первого \ поиска от конца строки до начала, после того, как при построении CString вот так CString s = CString( strFind,n );
Я строю первые п символов в строке так s
равно C:\Downloads\Insanity\Program
но я хочу скопировать 7 .World.exe
к CString s
а не иначе, как я могу сделать это с помощью CString
или же std::string
?
Вы конвертируете std::string
к CString
только для ReverseFind
функциональность? Если это так, вы можете использовать std::basic_string::find_last_of
вместо.
#include <iostream>
#include <string>
int main()
{
std::string s(R"(C:\Downloads\Insanity\Program\7. World.exe)");
auto pos = s.find_last_of( '\\' ) + 1; //advance to one beyond the backslash
std::string filename( s, pos );
std::cout << filename << std::endl;
}
Как насчет:
CString s = strFind.Mid(n+1);
или же:
std::string s = line.substr(n+1);