我有一个 string s="home/dir/folder/name"
我想分裂s的s1="home/dir/folder"和s2="name";
我做了:
char *token = strtok( const_cast<char*>(s.c_str() ), "/" );
std::string name;
std::vector<int> values;
while ( token != NULL )
{
name=token;
token = strtok( NULL, "/" );
}
Run Code Online (Sandbox Code Playgroud)
现在s1=name.怎么样s2?
我建议不要使用strtok.请改为使用Boost Tokenizer(以下是一些示例).
或者,要简单地找到最后一个的位置'/',您可以使用std::string::rfind:
#include <string>
#include <iostream>
int main() {
std::string s = "home/dir/folder/name";
std::string::size_type p = s.rfind('/');
if (p == std::string::npos) {
std::cerr << "s contains no forward slashes" << std::endl;
} else {
std::string s1(s, 0, p);
std::string s2(s, p + 1);
std::cout << "s1=[" << s1 << "]" << std::endl;
std::cout << "s2=[" << s2 << "]" << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8489 次 |
| 最近记录: |