2017-02-17 5 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, I connot сравнить int и char. Вы можете мне помочь?

+0

Он отлично работает, нет необходимости в каких-либо странностях ASCII-кода. Вероятно, проблема заключается в том, что используемая оболочка/терминал/командная строка обрабатывает '>' как специальный символ, и вам нужно вместо этого писать ''> '' или '\>'. – nwp

+0

И 'argv [3]' is 'char *'. – LogicStuff

+0

@nwp Извините, но могу ли я сделать это как '>' и sont использовать что-нибудь еще? –

ответ

2

Большинство оболочек (включая Windows CMD) обрабатывает символы, такие как <, > и | особым образом. < - перенаправление ввода, > - выходное перенаправление, а | - это вывод трубопровода из одного процесса на другой.

Поэтому вы никогда не сможете получить эти символы в качестве аргументов для своего процесса, среда командной строки будет использовать их и не будет передавать их в вашу программу.

Unix-оболочки с поддержкой фоновой работы также добавляет & в микс.

+0

Это так печально; (Спасибо за ответ! –

Смежные вопросы