Удаление всего после символа (а также символа)

У меня есть такая строка:

std::string string1 = "xjdfhfakdjs%54k34k.-jk34";

Мне нужно получить только ""xjdfhfakdjs", но строка динамическая, а не жестко закодированная, поэтому я не знаю, что это такое, длина и т. д. поэтому я хотел удалить все после %, а также % char.

как я мог это сделать?

3 ответов


std:: string mystr = string1.substr (0, string1.найти("%", 0));

Я считаю, что это сработает.


std::string the_prefix_you_want = string1.substr(0, string1.find("%"));

посмотреть: http://www.cplusplus.com/reference/string/string/find/ и http://www.cplusplus.com/reference/string/string/substr/ дополнительные детали


сделал C-подобную вещь, которая работает в своей текущей форме, но, конечно, более неуклюжая, чем методы, показанные выше:

#include <windows.h>
void main ()
{
    int i;
    wchar_t searchString[100];
    wchar_t * stringReturn;
    memset(searchString, L'', sizeof(stringReturn));
    wcscpy_s(searchString, 100, L"String\ to search");
    stringReturn = wcschr (searchString, '\');
    if (stringReturn)
    {
        for (i = 0; i < (int)(stringReturn - searchString); i++) stringReturn[i] = searchString[i];
        stringReturn[i] = L'';
        wcscpy_s(searchString, 100, stringReturn);
    }
}

можно легко изменить для работы с динамическими строками.