Вопрос по string, visual-c++, c++ – Удаление всего после персонажа (а также персонажа)

9

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

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

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

How could I do this?

Вы уже попробовали что-нибудь? Как правило, это лучший вопрос (и он показывает добросовестные усилия с вашей стороны), если вы можете сказать: «Вот то, что я пытался». Michael Burr

Ваш Ответ

3   ответа
0

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

#include <windows.h>
void main ()
{
    int i;
    wchar_t searchString[100];
    wchar_t * stringReturn;
    memset(searchString, L'\0', 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'\0';
        wcscpy_s(searchString, 100, stringReturn);
    }
}

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

19
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/ Больше подробностей

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededstring1.erase (string1.find("%"), string1[string1.length() - 1]);Error: User Rate Limit Exceededstring1[-1]Error: User Rate Limit ExceedederaseError: User Rate Limit ExceedednposError: User Rate Limit Exceededstring::size_type n = string1.find("%"); if (n != string::npos) string1.erase(n);Error: User Rate Limit Exceedednpos substrError: User Rate Limit Exceeded
1

% & quot ;, 0));

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

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