2012-11-29 5 views
1

다음은 코드의 발췌 부분입니다.Argv [] 인수를 등록하지 않음

int main(int argc, char*argv[]) 
string s; 

if (argc == 2) 
    argv[1] == s;    //I tried this with and without brackets 

else if (argc == 1){ 
    cout << "Enter a number." << endl; 
    cin >> s; 
    } 
else 
    {  
    cout << "Use only one argument" << endl; 
    } 

cout << s << endl; 

그러나 인수가있는 경우 (첫 번째 조건) 항상 0입니다. 이유는 무엇입니까?

답변

2

argv[1] == s; 

이 줄은

s = argv[1]; 

현재 코드 ==를 사용하여 빈 문자열로 argv[1]을 비교하고 비교 결과를 폐기해야합니다. 문자열 s에 첫 번째 인수를 가져온 것처럼 보이므로 할당이 필요합니다.

+0

와우 감사합니다. 초보자 실수인지 아니면 그냥 바보일까요? – Foxic

+0

@Foxic 제 생각에 이것은 컴파일러가 용서하는 경우입니다. 여러분의'== '작동은 아무 효과가 없으므로 문제를 해결하라는 메시지를 표시합니다. – dasblinkenlight

+0

@ dasblinkenlight, 나는 GCC가 대개 '경고 : 성명서는 아무런 효과가 없다.'라고 말합니다. 나는 그것이'-Wall' 또는 무엇인가를 사용하는 경우에만 있는지 확실하지 않습니다. – chris