-2

QT C ++を使用してモバイル用のプログラムを作成する際にいくつかの問題が発生しました。実行すると、次のようになりcannot convert 'std::string' to 'std::string*' in initialization ます。そのエラーのコードがあります。

void rozvrh_b17::pars(string par) 
{ 
    data = new std::string*(par);
    printf(data->data());
}
//data and par are std::string
//without that new std::string*() it does similiar error

そして、私はstd::stringをstd::string*に変換する方法を尋ねます??

編集:あるフォームから別のフォームにデータを転送するためにこの関数を作成しましたが、そのパラメーターを覚えておく必要があります...

4

3 に答える 3

2

この質問は研究努力を示していないので、私はあなたに反対票を投じました。

string * data = ∥

std::string*ポインタ型です。がありstd::string、そのアドレスは必要なポインタタイプです。これは、ポインタを使用する最初の原則の1つです。

于 2013-03-19T15:24:19.633 に答える
0

あなたは本当に何をしようとしていますか?

文字列を印刷したいだけなら、これはうまくいくはずです:

void rozvrh_b17::pars(string par) 
{ 
    printf(par.c_str());
}

ヒープ上に文字列のコピーを作成する場合は、次のものが必要です。

std::string* data = new std::string(par);

しかし、それはあまり意味がありません。

于 2013-03-19T15:25:10.267 に答える
0

ポインタから文字列に文字列を割り当てようとしています。この特定のケースでは、いくつかのことがわかります。

  1. コピーはまったく必要ありません-すぐにパーを使用してください

  2. あなたはパーをconstrefにする方が良いです:void rozvrh_b17::pars(const string& par)

  3. stringnewを呼び出す場合にのみ使用する必要があります。そうしないと、文字列へのポインタが作成されます。そうしてください:data = new std::string(par);

于 2013-03-19T15:25:26.280 に答える