C ++ : Ctrl + d를 사용하여 입력 루프를 종료 할 때 마지막 입력이 선택되지 않는 이유는 무엇입니까?

JS 스타터

저는 C ++를 처음 접했고 여기에 내 코드가 있습니다.

int main(int argc, const char * argv[]) {

    vector<double> nums;
    double input;
    while (cin >> input) {
        nums.push_back(input);
    }

    for (int i = 0; i < nums.size(); i++) {
        cout << nums[i] << endl;
    }

    return 0;
}

프로그램이 실행되면 다음과 같이 3 개의 숫자를 입력합니다.

Enter numbers: 1 2 3

내가 입력 한 직후 3, 나는 imediately 누를 ctrl+denter. 그러나 두 개의 숫자 만 인쇄됩니다.

를 입력 한 직후 3에을 누르면 enter, ctrl+d, enter세 개의 숫자가 인쇄됩니다.

먼저 누르는 키에 관계없이 3 개의 숫자를 모두 인쇄하는 방법을 알고 싶습니다. 미리 감사드립니다.

존 그리핀

C ++ 코드는 괜찮습니다. 이것을 일으키는 것은 쉘의 터미널 설정입니다. Linux 터미널에 입력 된 ^ D (^ D는 Unix 또는 Mac을 의미 함)는 행이 제출 될 때까지 해석되지 않습니다. 내 주장이 올바른지 확인하려면 다음과 같은 파일을 만드십시오.

echo -n 1 2 3 > /tmp/stuff.txt

이제 파일에 종료 줄 바꿈이 없는지 다시 확인하십시오.

cat /tmp/stuff.txt

개행이 없다는 것을 알 수 있습니다. 이제 파일에 대해 잘 작동하는 프로그램을 실행하십시오.

./a.out < /tmp/stuff.txt

잘 작동했습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관