std::getline(cin,) 형식으로 쓸때 입력 버퍼에 남아 있는 \n 이 잇을경우를 대비해서
std::cin.ignore(); 를 쓰잖아요
대신 fseek(stdin,0,SEEK_END);쓰면 해결 되던데
cin이 아니라 stdin을 조정 해주는 거라서 이렇게 써도 되는건지
cin이랑 stdin이 같은 파일 구조체의 포인터를 가르키는건지 혹은 각각의 파일구조체가 가리키는 파일의 주소값이 같은건지 궁금합니다
std::getline(cin,) 형식으로 쓸때 입력 버퍼에 남아 있는 \n 이 잇을경우를 대비해서
std::cin.ignore(); 를 쓰잖아요
대신 fseek(stdin,0,SEEK_END);쓰면 해결 되던데
cin이 아니라 stdin을 조정 해주는 거라서 이렇게 써도 되는건지
cin이랑 stdin이 같은 파일 구조체의 포인터를 가르키는건지 혹은 각각의 파일구조체가 가리키는 파일의 주소값이 같은건지 궁금합니다
따로 해제하지 않는이상 연결돼있음
답변 감사합니다
파일구조체가 같은게 아니라 각각의 파일구조체가 같은 메모리 주소를 가리키고 있는건가요?
https://en.cppreference.com/w/cpp/io/ios_base/sync_with_stdio
synchronized
라고 돼있는데 그냥 각각 따로고 동기화만 하는듯?
감사합니다
근데 개행문자 안남지않음?
일반 적으론 그런데 [...]하고 나서 바로,getline을 실행하는 함수를 호출해보면 이유는 모르겠지만 getline이 값을 바로 받더라고요 이상하게 wn을 무시하면 바로 넘어 가진 않구요
[...]가 개행문자를 남기는 걸까요?
제가 할땐 재현이 안됨
#include #include int main(){ using namespace std; string a; string b = "dd\n"; [...]; getline(cin, a); cout << ""; return 0;}
이렇게 짰는데 a에 \n 안들어와유
??? 왜 특정 솔루션에서만 일어나지????????
아 미안 그게 원인이 아니라 scanf("%d",&a); 가 원인인듯
stdio랑 싱크 맞추지 마라 std::cin, cout 성능 개떡락함
그리고 getline은 기본 delimiter가 \n이라 버퍼에 남을 이유가 없는데
scanf때문인듯요