Нет, это невозможно, и это также довольно запутанно по сравнению с:
if($e) {
return array('false', $e);
}
ответ hackingword получает Вас на полпути там. Но std::remove()
от <algorithm>
на самом деле не делает строку немного короче - она просто возвращает итератор, говоря, что "новая последовательность закончилась бы здесь". Необходимо звонить my_string().erase()
сделать это:
#include <string>
#include <algorithm> // For std::remove()
my_str.erase(std::remove(my_str.begin(), my_str.end(), '\t'), my_str.end());
Если Вы хотите удалить все происшествия в строке, то можно использовать стереть/удалить идиому:
#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
Если использование Повышения является слишком много служебным, можно прокрутить собственное функциональное использование для обрезки 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);
remove
алгоритм смещает все символы, которые не будут удалены к началу, перезаписывая удаленные символы, но он не изменяет длину контейнера (так как он работает над итераторами и не знает базовый контейнер). Для достижения этого звонить erase
:
str.erase(remove(str.begin(), str.end(), '\t'), str.end());
Так как другие уже ответили, как сделать это со станд.:: строка, вот то, что можно использовать для CString:
myString.TrimRight( '\t' ); // trims tabs from end of string
myString.Trim( '\t' ); // trims tabs from beginning and end of string
если Вы хотите избавиться от всех вкладок, даже вкладки в строке, используют
myString.Replace( _T("\t"), _T("") );
Просканируйте строку и удалите все найденные происшествия.
HackingWords почти там: Используйте стирание в сочетании с, удаляют.
std::string my_string = "this\tis\ta\ttabbed\tstring";
my_string.erase( std::remove( my_string.begin(), my_string.end(), '\t'), my_string.end());
Первая идея состояла бы в том, чтобы использовать, удаляют
remove(myString.begin(), myString.end(), "\t");
Хотя Вам, возможно, придется использовать remove_if вместо этого, если то сравнение не работает.