나는 그것이 전체 라인을 얻기보다는 공백에서 멈 춥니 다 잊었 때문에두 개의 다른 getline() 함수가있는 이유는 무엇입니까?
std::string s;
cin >> s;
내가 나 자신을 저주 C++ 코드 라인의 빠른 조각을 할 때마다.
다음은 getline
기억에, 나는 변함없이 두 품종으로 혼동 :
std::string s;
getline (std::cin, s);
과 :
char cs[256];
std::cin.getline (cs, sizeof (cs));
실제로 데이터 형식이 아닌이 둘 사이에 차이가 있습니까?
저는 C++ 방식이 전자가되어야한다고 생각합니다. 어떤 상황에서 나는 아마 후자를 사용할 것인가? 어쨌든 null-terminated 문자 배열 대신에 실제 문자열을 사용해야 할 것입니다.
입력이 실제로 입력 스트림의 범위 여야하므로 이전 부분이 istream
인 이유는 무엇입니까?
나는이 문구가 "느슨하게 결합"되어 있다고 생각한다. "제대로 통합되지 않았다"는 부정적인 의미가있다. std :: string을 사용하지 않고'std :: istream'을 사용하지 않고'std :: istream'을 사용할 수 있다는 것이 좋은 일이라고 생각합니다. –
@Charles : "제출"을하기 전에 정확한 반대의 변화를했다고 말하면 저를 믿으시겠습니까?) 필자는 개인적으로보다 "균일 한"표준 라이브러리를 선호 할 것입니다. C++ 표준 라이브러리는 "유기적 성장"의 전형입니다. –
@Charles : iostream과 문자열이 결합되어 있지 않은 것은 틀림 없다고 생각합니다. iostream은 기본 수준에서 문자열 조작에 의존합니다. 종속성을 줄이는 것은 문자열 클래스가 아닌 경우 C 문자열로 작업하는 멤버 함수를 사용할 수 없다는 것을 제공하는 것입니다. – Puppy