From 26ef1f56c8b62019e45f008f2abb2f8dcca6f24b Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Wed, 9 Feb 2005 13:46:23 -0500 Subject: Add the split_first and split_last functions on strings. base/str.cc: base/str.hh: Add a couple functions that allow you to split a string at the first or last instance of a delimiter. --HG-- extra : convert_revision : 2af22639e1b67ac61577c00475a555841a56f902 --- base/str.cc | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'base/str.cc') diff --git a/base/str.cc b/base/str.cc index dd8d80043..5357ba79f 100644 --- a/base/str.cc +++ b/base/str.cc @@ -39,6 +39,36 @@ using namespace std; +bool +split_first(const string &s, string &lhs, string &rhs, char c) +{ + string::size_type offset = s.find(c); + if (offset == string::npos) { + lhs = s; + rhs = ""; + return false; + } + + lhs = s.substr(0, offset); + rhs = s.substr(offset + 1); + return true; +} + +bool +split_last(const string &s, string &lhs, string &rhs, char c) +{ + string::size_type offset = s.rfind(c); + if (offset == string::npos) { + lhs = s; + rhs = ""; + return false; + } + + lhs = s.substr(0, offset); + rhs = s.substr(offset + 1); + return true; +} + void tokenize(vector& v, const string &s, char token, bool ignore) { -- cgit v1.2.3