Если вы хотите удалить все вхождения в строке, вы можете использовать стирание / удаление идиома:
#include <algorithm>
s.erase(std::remove(s.begin(), s.end(), '\t'), s.end());
Если вы хотите удалить только вкладку в начале и конце строки, вы можете использовать алгоритмы бустерной строки :
#include <boost/algorithm/string.hpp>
boost::trim(s); // removes all leading and trailing white spaces
boost::trim_if(s, boost::is_any_of("\t")); // removes only tabs
Если использование Boost слишком много, вы можете свернуть свою собственную функцию обрезки, используя find_first_not_of
и find_last_not_of
строковые методы.
std::string::size_type begin = s.find_first_not_of("\t");
std::string::size_type end = s.find_last_not_of("\t");
std::string trimmed = s.substr(begin, end-begin + 1);