C ++ разделение строки и получение части после пробела

0

Мне нужно сделать разбиение строки таким образом, что если у меня есть строка, как показано ниже

string foo="thisIsThe         Test     Input";

Мне нужно получить часть, идущую после множественного или одиночного с пространством. В этом случае мне нужно получить "Test Input". Я знаю, что я могу получить первую часть:

int index=foo.find(' ');
string subString=foo.substr(0,index);

Но я не знаю, как я могу делать то, что хочу. Кто-нибудь может мне помочь?

Теги:
string
split

2 ответа

1
Лучший ответ

std::find_first_not_of принимает аргумент позиции, который указывает, с чего начать поиск. Поэтому используйте это, чтобы найти первое не-пространство, начиная с первого места.

int index=foo.find(' ');
index=foo.find_first_not_of(' ', index);
string subString=foo.substr(index);
  • 1
    Он хочет только часть, содержащую «Тестовый ввод». Вы должны получить от индекса до конца
  • 0
    @ Ben-Voigt Если строка не содержит ничего после пробелов, это дает мне ошибку, верно?
Показать ещё 5 комментариев
0

Вы также можете скопировать на новый строковый символ 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];

Ещё вопросы

Сообщество Overcoder
Наверх
Меню