Removendo tudo depois do personagem (e também personagem)

Eu tenho uma string como esta:

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

Eu preciso obter apenas “” xjdfhfakdjs “, mas a string é dinâmica, não codificada, então eu não sei o que é, o comprimento, etc, então eu queria remover tudo depois de%, e também o% char.

Como eu pude fazer isso?

std :: string mystr = string1.substr (0, string1.find (“%”, 0));

Eu acredito que isso funcionará.

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

Veja: http://www.cplusplus.com/reference/string/string/find/ e http://www.cplusplus.com/reference/string/string/substr/ para mais detalhes

Fez uma coisa semelhante ao C que funciona na sua forma atual, mas certamente mais desajeitada do que os methods mostrados acima:

 #include  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); } } 

Pode ser facilmente modificado para trabalhar com strings dinâmicas.