1

この関数で char を文字列にキャストしたい:

int charIndexDistance (char a, char b)
{
    if (indexical) {
        string test_a = convertOntology((string)a, 0);
        string test_b = convertOntology((string)b, 0);
        cout << test_a << " " << test_b << endl;

        int test = abs(char_index[a] - char_index[b]);
        return test; //measure indexical distance between chars
    } else 
        return 1;
}

しかし、「エラー C2440: '型キャスト' : 'char' から 'std::string に変換できません」というメッセージが表示されます

問題は何ですか?char はどのように文字列にキャストされますか? 文字列の追加を使用する必要がありますか?

また、coutint testはデバッグ用であり、後で削除されます

4

4 に答える 4

4

そのような変換はありません。代わりに、手動で文字列を作成する必要があります。

string(1, a)

これは、長さとacharをとるコンストラクターを使用して、文字列を。で埋めます

コードのコンテキストでは:

string test_a = convertOntology(string(1, a), 0);
string test_b = convertOntology(string(1, b), 0);

適切なコンストラクター/キャストが存在する場合でも、C ++ではCスタイルのキャストを避ける必要があるため、コードは不適切です。状況はstatic_cast代わりに必要になるでしょう。

于 2013-03-05T17:06:49.650 に答える
2

Acharは文字列ではありません。

Acharもnullで終了する文字列ではありません。

nullで終了する文字列は、末尾にnull文字が含まれるchar配列です。

于 2013-03-05T17:06:56.047 に答える
0

すでに述べたものはすべて機能しますが、次のことも試してみてください。

char mychar = 'A';
string single_char = "";
string += mychar;

それが役立つことを願っています!

于 2015-02-01T04:49:25.603 に答える
0

(string)aと置き換えますstring(1,a)

于 2013-03-05T17:09:07.403 に答える