fork download
  1. #include <string>
  2. #include <cstdio>
  3. using std::string;
  4.  
  5. string getextn (const string &fn) { // mistreats files whose name starts with . but doesn't matter here.
  6. int sep = fn.find_last_of(".\\/");
  7. return (sep >= 0 && fn[sep] == '.') ? fn.substr(sep) : "";
  8. }
  9.  
  10. void test_ (string fn) {
  11. string ex = getextn(fn);
  12. printf("%s => '%s'\n", fn.c_str(), ex.c_str());
  13. }
  14.  
  15. void test (string fn) {
  16. test_("/" + fn);
  17. test_("./" + fn);
  18. test_("./pathname/" + fn);
  19. test_("./path.name/" + fn);
  20. test_("pathname/" + fn);
  21. test_("path.name/" + fn);
  22. test_("c:\\path.name\\" + fn);
  23. }
  24.  
  25. int main() {
  26. printf("start\n");
  27. // your code goes here
  28. test("");
  29. test(".");
  30. test(".git_ignore");
  31. test("filename");
  32. test("filename.");
  33. test("filename.tar");
  34. test("filename.tar.gz");
  35. return 0;
  36. }
Success #stdin #stdout 0.01s 5436KB
stdin
Standard input is empty
stdout
start
/ => ''
./ => ''
./pathname/ => ''
./path.name/ => ''
pathname/ => ''
path.name/ => ''
c:\path.name\ => ''
/. => '.'
./. => '.'
./pathname/. => '.'
./path.name/. => '.'
pathname/. => '.'
path.name/. => '.'
c:\path.name\. => '.'
/.git_ignore => '.git_ignore'
./.git_ignore => '.git_ignore'
./pathname/.git_ignore => '.git_ignore'
./path.name/.git_ignore => '.git_ignore'
pathname/.git_ignore => '.git_ignore'
path.name/.git_ignore => '.git_ignore'
c:\path.name\.git_ignore => '.git_ignore'
/filename => ''
./filename => ''
./pathname/filename => ''
./path.name/filename => ''
pathname/filename => ''
path.name/filename => ''
c:\path.name\filename => ''
/filename. => '.'
./filename. => '.'
./pathname/filename. => '.'
./path.name/filename. => '.'
pathname/filename. => '.'
path.name/filename. => '.'
c:\path.name\filename. => '.'
/filename.tar => '.tar'
./filename.tar => '.tar'
./pathname/filename.tar => '.tar'
./path.name/filename.tar => '.tar'
pathname/filename.tar => '.tar'
path.name/filename.tar => '.tar'
c:\path.name\filename.tar => '.tar'
/filename.tar.gz => '.gz'
./filename.tar.gz => '.gz'
./pathname/filename.tar.gz => '.gz'
./path.name/filename.tar.gz => '.gz'
pathname/filename.tar.gz => '.gz'
path.name/filename.tar.gz => '.gz'
c:\path.name\filename.tar.gz => '.gz'