Простой вопрос я имеющий раздражающий время с:литейные основные аргументы Int
Мой главный настроен так:
int main(int argc, char *argv[]){
int i = (int) argv[1];
cout << "Inputted value: " << i << endl;
return 0;
}
Если я скомпилировать и выполнить с g++ main.cc -o main
и main 5
я получаю Результат мусора снова на cout
. Как исправить эту проблему кастинга?
аргументы командной строки принимаются как строки (даже если они строки цифр). Чтобы преобразовать строку в число, вы должны использовать что-то вроде 'std :: stoi'. –
Именно поэтому броски C-стиля опасны. – aschepler
@remyabel: Приведение из 'char *' в 'int' является совершенно законным, хотя результат в лучшем случае определяется реализацией. И предупреждение «теряет точность», вероятно, зависит от относительных размеров «char *» и «int»; на многих системах они являются 32 битами. (Хотя «точность» на самом деле не применяется к значениям указателя.) –