12

私はこのような文字列を持っています:

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

"" xjdfhfakdjs "のみを取得する必要がありますが、文字列は動的であり、ハードコードされていないため、長さなどがわからないため、%以降のすべてと%charを削除したいと思いました。

どうすればこれを行うことができますか?

4

3 に答える 3

20
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/を参照してください。

于 2012-05-01T01:18:15.197 に答える
8

私はそれがうまくいくと信じています。

std::string mystr = string1.substr(0, string1.find("%", 0));
于 2012-05-01T01:19:17.803 に答える
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);
    }
}

動的な文字列で機能するように簡単に変更できます。

于 2016-02-20T06:29:59.210 に答える