删除字符后的所有内容(以及字符)

时间:2012-05-01 01:11:29

标签: c++ string visual-c++ std

我有一个这样的字符串:

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

我只需要获得"" xjdfhfakdjs",但字符串是动态的,不是硬编码所以我不知道它是什么,长度等等所以我想删除%之后的所有内容,以及%char。

我该怎么做?

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分:1)

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

我相信这会奏效。

答案 2 :(得分:0)

C类似的东西是否以当前形式工作,但肯定比上面显示的方法更笨重:

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

可以轻松修改以适用于动态字符串。