鉴于以下内容:
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:\下载\精神错乱\程序\ 7。 World.exe
此行已添加到vector<CString>
。
我的问题是int n = strFind.ReverseFind( '\\\' );
找到第一个\的字符串pos,从字符串的结尾搜索到开头,之后构造像这样的CString CString s = CString( strFind,n );
我正在构造第一个n个字符在字符串上s
等于C:\Downloads\Insanity\Program
但我想要的是将7 .World.exe
复制到CString s
而不是其他方式,我怎样才能使用{{ 1}}或CString
?
答案 0 :(得分:3)
您是仅将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;
}
答案 1 :(得分:2)
怎么样:
CString s = strFind.Mid(n+1);
或:
std::string s = line.substr(n+1);