街中で見かけて「グッときた人」の思い出

C言語で取得した文字列を、C++の文字列として取り扱いたいです。

皆さんこんにちは。

C言語で取得したchar型で定義された文字列を、
C++の「std::string」に渡したいと思っております。
どうすればかなうでしょうか?
具体的には次のような内容です。

■C言語側
----
char key1 = "deperture";
----

■C++側で「key1 = key2」としたいです。
----
std::string key2 = key1;
----

C言語側で記述されている「key1」の値(deperture)を、
C++ソース内の「key2」に渡したいと思っています。

こうゆう場合、どんな方法をとれば適切でしょうか。
C言語側でのchar型の文字列の値を、
C++側の「std::string」型として
C++のソースへ渡す方法が分からないです。

アドバイスいただけるとありがたいです。
簡単な例を頂けると更に大変ありがたいです。

以上どうぞ宜しくお願い致します。

A 回答 (4件)

> char key1 = "deperture";



本当にこれであっていますか?

char key1[] = "deperture";

ではないですか?
そうだとした場合、C++側では、

extern "C" char key1[];
std::string key2(key1);

とすればよいかと思います。
    • good
    • 0
この回答へのお礼

> 本当にこれであっていますか?

おっしゃる通り、下記の配列の意味です。
失礼しました。

char key1[] = "deperture"

教えていただいた方法で解決いたしました。
ありがとうございます!

お礼日時:2009/12/25 12:38

「元から」ってのは「宣言を一切変えないで」ってつもりだったんだけどなぁ. 確かに言葉が足りないか.

    • good
    • 0

質問の意図がよくわかりませんが、


こういうことですかね?

char key1[10] = "deperture";
std::string key2 = key1;
    • good
    • 0

char key1 = "deperture";


の意味がよくわからんけど, 「元から C++ である」としたらあなたはどのように書きますか? たぶんそれであってると思うよ.
    • good
    • 0
この回答へのお礼

Tacosanさん
ご回答ありがとうございます!

元から、
C側がC++であるとしたら、

C側で
「char key1」を
「std::string key1」で宣言しておいて、

C++側では
その(C)ファイルをincludeし、
「key1 = key2;」とすることで、
key1の値を、key2に渡してみようと考えました。

合ってますでしょうか?
とんちんかんな事言ってたら申し訳ありません。

お礼日時:2009/12/22 16:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!