10秒目をつむったら…

C側で得た変数をC++の変数に流し込みたいです。


現在、C++で
次のように、
入力ストリームから1行分の文字列を読み込んで、
読み込んだ文字列を「cmd」に流し込んだ際に、

cmdに代入された文字列が「get」であると、
他のファイルで定義されている「doget」という関数が
実行されるようになっています。

-----------
std::string cmd;
std::getline(cin, cmd);

void nod::execute(const std::string& cmd) {

std::stringstream ss(cmd);
std::string command;
ss >> command;

if (command == "get") {

std::string key = "baseball" ;
std::string val = stand.doget(key);
}
}
-----------



これを、
以下のように、

(1) C言語側にある「a」という変数にある値を
C++側のkeyに流しこんで、

(2) また、C側にあるsign配列内の文字列を
C++側の「cmd」に代入したいと思っています。


C側
---------
/* C側の「a」配列の値を、上記C++側の「key」に代入したい */
char a[] = "www.gehohogetest.jp";

/* 上記C++側の「cmd」変数に、C側の配列で定義されている"get"という文字列を代入したい */
char sign[]= "get";
---------

その場合、C側とC+側をどう記述すれば、
希望を叶えることが出来るでしょうか。
アドバイスいただけるとありがたいです。
以上どうぞ宜しくお願い致します。

A 回答 (3件)

C++側で普通に



extern "C" char a[];
extern "C" char sign[];

のように宣言して、あとは普通に使えばよいだけでは?
    • good
    • 0

だったらなおのこと C++ で書けばいいと思うんだが.... もしくは, その「C プログラム」を黙って C++ コンパイラに食わせて, エラーが出たときに考えてもいいかもしれん.


C++ でグルーモジュールを書いてもいいけど.
    • good
    • 0

これらをまとめて 1つのプログラムにするのなら, 「諦めて最初から全部 C++ にする」のがもっとも単純な気がするなぁ. わざわざ

C と C++ に分ける意味が分からん.

この回答への補足

背景としましては、

他人が書いた大きな大きなC++内のソースにある関数や変数を
C側でも使わないといけなくなってしまったという流れになります。

補足日時:2010/01/06 16:36
    • good
    • 0

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