1

コマンドライン引数を使用して実行するプログラムを実行しました。私は現在、その「改善」の一環として、メニュー ドライブ プログラムを実行しようとしています。私が使った、

int main(int argc, char * argv[])

議論があったオリジナルで:

char * startCity = argv[1];
char * endCity = argv[2];
in.open(argv[3],ios::in); //<----file name went here

これが私が今やったことであり、それが間違っていることを知っています:

int main(int argc, char * argv[]){

int menuChoice;
string startCity;
string endCity;
string fileName;
ifstream in;

cout<<"Welcome to J.A.C. P2\n"
  "\n"
  "This program will find the shortest path\n"
  "from One city to all other cities if there\n"
  "is a connecting node, find the shortest path\n"
  "between two cities or find the shortest\n"
  "between three or more cities.\n"<<endl;

cout<<"Please make a choice of what you would like to do:\n"<<endl;

cout<<"  1------> Shortest Path between 2 cities.\n"
      "  2------> Shortest Path between 3 or more cities.\n"
      "  3------> Shortest Path from 1 city to all.\n"
      "  9------> Take your ball and go home!\n"<<endl;
cout<<"Waiting on you: "; cin>>menuChoice;

switch (menuChoice) {
    case 1:
        cout<<"Enter the starting city: ";
        cin>>StartCity;
        cout<<"\nEnter the ending city: ";
        cin>>EndCity;
        cout<<"\nEnter the name of the file: ";
        cin>> fileName;

    break;

私のプログラムはすべて char * argv[] に基づいているため、それらを文字列に変換するにはどうすればよいですか、または引数を読み込むために引数に変数を割り当てるにはどうすればよいですか?

私はすべての答えに感謝していますが、それらは私が逃げようとしている方向に向かっているようです. OLD プログラムは、コマンド ライン引数を使用していました。これどうやってするの:

string StartCity = char * argv[1];
string EndCity = char * agrv[2];
string filename = in.open(argv[3],ios::in);

それが私がやろうとしていることです。私が自分自身を明確にしなかった場合は申し訳ありません。

4

3 に答える 3

4

これは役立つかもしれません。

int main (int argc, char ** argv)
{
          std::vector<std::string> params(argv, argv + argc);       
          //Now you can use the command line arguments params[0], params[1] ... 

}
于 2012-05-07T01:17:18.757 に答える
0

コマンドライン引数を文字列に変換するには:

std::vector<std::string> args(argc);
for (int i=1; i<argc; ++i)
   args[i] = argv[i];

「0」はプログラム名であるため、「1」から始めます。


それらを変数に入れるには、多分:

// Make sure we're not accessing past the end of the array.
if (argc != 4) {
    std::cout << "Please enter three command line arguments" << std::endl;
    return 1;
}

string startCity = argv[1];
string endCity = argv[2];
string fileName = argv[3];      
于 2012-05-07T01:21:19.257 に答える
0

から を取得するにconst char *std::string、 を使用しますstd::string::c_str()

fstream file;
string s = "path\\file.txt";
file.open (s.c_str(), ios::in);
于 2012-05-07T01:27:15.520 に答える