2017-02-17 8 views
-1

私はLinuxで>の形式で引数を取ろうとしています。 私はこのように、私の問題を解決しようとしています:比較記号C++

std::string big(">"); 

if (argv[3]==big) {....} 

しかし、それはこのように動作しません。

しかし、それはこのように動作します:私は推測

std::string big("M"); 

if (argv[3]==big) {....} 

、私は私の文字のASCII CODEを取得し、argv[3]と比較する必要があります。しかし、argv[3]それはcharのタイプです、私はintcharを比較します。 私を助けることができますか?

+0

正常に動作し、ASCIIコードの奇妙なものは必要ありません。問題はおそらくあなたが使用しているシェル/端末/コマンドラインが '>'を特殊文字として扱い、代わりに '' '' 'や' \> 'を書く必要があることでしょう。 – nwp

+0

そして 'argv [3]'は 'char *'です。 – LogicStuff

+0

@nwp申し訳ありませんが、私は '>'のようにすることができますか? –

答えて

2

ほとんどのシェル(Windows CMDを含む)は、特別な方法で<,>および|のようなシンボルを処理します。 <は入力リダイレクション、>は出力リダイレクション、|はあるプロセスから別のプロセスへのパイプ出力です。

したがって、プロセスの引数としてこれらのシンボルを取得することはできません。コマンドライン環境では、これらのシンボルを使用してプログラムに渡されません。

バックグラウンドジョブをサポートしているUNIXシェルでも、&が追加されます。

+0

それはとても悲しい;(答えに感謝! –