Обрезать / удалить вкладку («\ t») из строки

Нет, это невозможно, и это также довольно запутанно по сравнению с:

if($e) {
    return array('false', $e);
}
10
задан Ferruccio 17 February 2009 в 11:01
поделиться

8 ответов

ответ 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());
19
ответ дан 3 December 2019 в 13:21
поделиться

Если Вы хотите удалить все происшествия в строке, то можно использовать стереть/удалить идиому:

#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);
20
ответ дан 3 December 2019 в 13:21
поделиться

remove алгоритм смещает все символы, которые не будут удалены к началу, перезаписывая удаленные символы, но он не изменяет длину контейнера (так как он работает над итераторами и не знает базовый контейнер). Для достижения этого звонить erase:

str.erase(remove(str.begin(), str.end(), '\t'), str.end());
6
ответ дан 3 December 2019 в 13:21
поделиться

Так как другие уже ответили, как сделать это со станд.:: строка, вот то, что можно использовать для 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("") );
3
ответ дан 3 December 2019 в 13:21
поделиться

Просканируйте строку и удалите все найденные происшествия.

2
ответ дан 3 December 2019 в 13:21
поделиться

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());
2
ответ дан 3 December 2019 в 13:21
поделиться

Замена CString?

замена ('\t', '')

1
ответ дан 3 December 2019 в 13:21
поделиться

Первая идея состояла бы в том, чтобы использовать, удаляют

remove(myString.begin(), myString.end(), "\t");

Хотя Вам, возможно, придется использовать remove_if вместо этого, если то сравнение не работает.

0
ответ дан 3 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: