を文字(とも文字)の後にすべて削除:私はこのような文字列を持っている
std::string string1 = "xjdfhfakdjs%54k34k.-jk34";
ので、私が何であるかを知らないハードコードではない、私は唯一の「」xjdfhfakdjs」を取得する必要がありますが、文字列は動的ですそれは、長さ等ので、私は%の後、すべてを削除したかった、とも%炭
私はこの
を文字(とも文字)の後にすべて削除:私はこのような文字列を持っている
std::string string1 = "xjdfhfakdjs%54k34k.-jk34";
ので、私が何であるかを知らないハードコードではない、私は唯一の「」xjdfhfakdjs」を取得する必要がありますが、文字列は動的ですそれは、長さ等ので、私は%の後、すべてを削除したかった、とも%炭
私はこの
std :: string mystr = string1.substr(0、string1.find( "%"、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/
@chris:そうではありません。彼はコピーを作って、あなたはそうしなかった。 –
新しい文字列を使用するかどうかに応じて(つまり、元の文字列にアクセスしたい場合)そうでなければ、クリスの答えは良いです。 –
私はこれを使用する面倒を少なくします。おそらくコピーにかかる時間はあまり重要ではありません(少なくともOPは何も言及していませんでした)。 – chris
は、現在の形で仕事をする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);
}
}
は簡単に動的な文字列のために動作するように変更することができます。
まだ何か試しましたか? 「これは私が試したことです」と言えば、一般的にはより良い質問です(あなたの善意の努力を示しています)。 –