-1

C++ で unordered_map と char* を使用してコマンド ライン プログラムを開発しています。

しかし、うまくいきません。

これが私のコードです。

#include "stdafx.h"
#include <unordered_map>

int main(int argc, char *argv[] )
{
  std::unordered_map <char*, char*> hash;

  for (int i = 1; i<argc; i++){
   if (argv[i][0] == '-'){
     hash[argv[i]] = argv[i+1];
   }
 }

 if (hash["-file"]){
   printf("Openning the file %s \n", hash["-file"]);
 }else{      
   printf("Error open files \n" );
   return 0;
 }

}

引数リストを提供すると、次のようになります。

myprogram.exe -file "c:\myfile.txt" -option1 .....

入力ファイルを開くことができません。

誰でもそれを手伝ってもらえますか?

どうもありがとうございました

4

1 に答える 1

1

std::string@WhozCraig がコメントで述べたように、代わりにchar*マップのキー タイプとして使用する必要があります。argvプログラム全体の寿命があるため、値の型として char* を使い続けることができます。

ただし、Boost を使用できる場合、その Program Options ライブラリは、この手書きのものよりも優れています。残念ながら、あなたは Windows を使用しているように見えるので、あなたのプラットフォームは のような組み込みのものを提供していませんgetopt_long()が、Boost PO はとにかく C++ でこれに最適な機能です。

于 2013-09-28T02:33:02.560 に答える