Мне нужно сделать разбиение строки таким образом, что если у меня есть строка, как показано ниже
string foo="thisIsThe Test Input";
Мне нужно получить часть, идущую после множественного или одиночного с пространством. В этом случае мне нужно получить "Test Input".
Я знаю, что я могу получить первую часть:
int index=foo.find(' ');
string subString=foo.substr(0,index);
Но я не знаю, как я могу делать то, что хочу. Кто-нибудь может мне помочь?
std::find_first_not_of
принимает аргумент позиции, который указывает, с чего начать поиск. Поэтому используйте это, чтобы найти первое не-пространство, начиная с первого места.
int index=foo.find(' ');
index=foo.find_first_not_of(' ', index);
string subString=foo.substr(index);
Вы также можете скопировать на новый строковый символ char, исключая любые пробелы. Это облегчит использование foo.find('');
Исключить все пробелы
string foo = "thisIsThe Test Input";
string bar[100];
for (int i = 0; i < foo.length(); i++)
{
if (foo[i] != ' ')
bar[i] = foo[i];
}
for (int i = 0; i < sizeof(bar) / sizeof(bar[i]); i++)
cout << bar[i];
Держите одно пространство между каждым термином:
string foo = "thisIsThe Test Input";
string bar[100];
for (int i = 0; i < foo.length(); i++)
{
if (foo[i] != ' ')
bar[i] = foo[i];
else if (foo[i + 1] != ' ' && foo[i] == ' ')
bar[i] = ' ';
}
for (int i = 0; i < sizeof(bar)/sizeof(bar[i]); i++)
cout << bar[i];