ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

初心者の為のC++コミュのC++でDOSコマンドの処理

  • mixiチェック
  • このエントリーをはてなブックマークに追加
DOSプロンプト上で実行できるコマンドをC++上で記述して実行できるEXEを作ろうと考えてます。

例えば、ソース内で記述したDOSコマンドの「CD」が実行されて、カレントディレクトリを変更したいのです。ソースは以下の通りです。

#include <stdlib.h>
#include <cstring.h>(←コンパイラによって変更しています)
int main(int, char** argv)
{
*argv++;
string s="cd c:\○○";(←○○は任意のフォルダ名)
system(s.c_str());
return 0;
}

しかし、これをコンパイル・実行すると、カレントディレクトリが変更されません。変数sをcoutすると、\マークが文字化けして表示されます。
恐らくこれが原因と考えられますが、何か方法は無いものでしょうか?
いろいろ調べていたら、APIとか出てきて、出来ることなら単純にすませたいと思っています(最低限、必要であれば吝かではないのですが)。
ちなみに、\マークを\\マークに置き換えても出来ませんでした。

コンパイラはボーランドやVC++2003を使ってます。VC++2008も準備しました。
OSはWindowsXPです。

どうか、ご教授下さい。宜しくお願いします。

コメント(1)

自己解決しました。
実はトピックに書き漏らしていたのですが、

string s="cd c:\○○";(←○○は任意のフォルダ名)
の下に
string s="dir ";
入れていて、カレントディレクトリの移動を確認していたのでうまく出来ていないと思っていました。

が、system関数は「子シェル」を呼び出して処理するため、一つ起動されるとアンロードされてしまい、移動したカレントディレクトリもクリアされてしまうようです。

参考:http://oshiete1.goo.ne.jp/qa771955.html

お騒がせしました。読んで下さった方々、ありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

初心者の為のC++ 更新情報

初心者の為のC++のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。