1

URLとして使用する文字列を準備する方法を探しています。

コードの基本は、探しているものを入力すると、入力した内容でブラウザーが開きます。私はC ++を学習しているので、これは学習プログラムです。そして、私はC ++を初めて使用するので、できるだけ具体的にしてください。

これが私がやろうとしていることです:

cin >> s_input;
transform(s_input.begin(), s_input.end(), s_input.begin(), tolower);
s_input = "start http://website.com/" + s_input + "/0/7/0";
system(s_input.c_str());

しかし、ユーザーが入力するすべてのスペースを「%20」に置き換えようとしています。私はこの方法で1つの方法を見つけましたが、一度に1つの文字でしか機能せず、文字の配列ではなく完全な文字列でそれを行う必要があります。これが私が試した方法です:

cin >> s_input;
transform(s_input.begin(), s_input.end(), s_input.begin(), tolower);
using std::string;
using std::cout;
using std::endl;
using std::replace;
replace(s_input.begin(), s_input.end(), ' ', '%20');
s_input = "start http://website.com/" + s_input + "/0/7/0";
system(s_input.c_str());

ご協力いただきありがとうございます!

4

3 に答える 3

5

Visual Studio 2010以降を使用している場合は、正規表現を使用して検索/置換できるはずです。

std::regex space("[[:space:]]");
s_input = std::regex_replace(s_input, space, "%20");

編集: 6引数バージョンの使用方法std::regex_replace

std::regex space("[[:space:]]");
std::string s_output;
std::regex_replace(s_output.begin(), s_input.begin(), s_input.end(), space, "%20");

これで、文字列s_outputに変更された文字列が含まれます。

置換文字列をに変更する必要がある場合がありますstd::string("%20")

ご覧のとおり、引数は5つしかありません。これは、6番目の引数がデフォルト値である必要があるためです。

于 2012-07-18T05:54:13.110 に答える
1

std::replace単一の要素(この場合はchars)を単一の要素に置き換えることしかできません。1つの要素を3つに置き換えようとしています。そのためには特別な関数が必要になります。Boostには、と呼ばれるものがありreplace_all、次のように使用できます。

boost::replace_all(s_input, " ", "%20");
于 2012-07-18T04:36:41.043 に答える
0

あなたがグーグルするならば:C ++ UrlEncode、あなたは多くのヒットを見つけるでしょう。これが1つです:

http://www.zedwood.com/article/111/cpp-urlencode-function

于 2012-07-18T04:14:07.080 に答える