2011-09-28 5 views
-4

표준 C++에서 빈 공간을 포함한 문자열을 입력하는 방법은 무엇입니까?표준 C++에서 표준 문자열 클래스를 사용하지 않고 빈 공간을 포함한 문자열을 입력하는 방법은 무엇입니까?

문자열 클래스를 사용하고 싶지 않습니다.

+0

문자열의 범위는 무엇입니까? 줄 바꿈? –

+4

왜 문자열 클래스를 사용하지 않으시겠습니까? 그것은 이유의 표준 C++의 일부입니다! – Sjoerd

+0

방금 ​​C를 사용하고 있다고 말한 것 같습니다 ... –

답변

1

std::istream::getline(char *, streamsize)

도난 부끄러움 std::string 사용함으로써 http://www.cplusplus.com/reference/iostream/istream/getline/

// istream getline 
#include <iostream> 
using namespace std; 
int main() { 
    char name[256], title[256]; 

    cout << "Enter your name: "; 
    cin.getline (name,256); 

    cout << "Enter your favourite movie: "; 
    cin.getline (title,256); 

    cout << name << "'s favourite movie is " << title; 

    return 0; 
} 
+1

그리고 나서 누군가 256 자보다 긴 행을 입력합니다 ... – Sjoerd

+0

어떤 종류의 문제가 있습니까? 그리고 왜 입력 스트림을 플러시하고 있습니까? –

1

에서. 그것을 사용하지 않을 이유가 없습니다.

확실하지 않은 기회가있어서 std::string을 사용할 수없는 추가 요구 사항이있는 경우 코드에 영향을 주므로 해당 요구 사항을 명시하십시오.

업데이트 : 입력이 구분 개행 인 경우, string s; std::getline(cin, s);

+1

문자열 클래스를 사용하지 않는 것이 매우 명확합니다. – Mysticial

+2

@ 신비로운 그래서? OP가 ** 왜 ** 그는 문자열 클래스를 사용할 수 없다고 말하면, 우리는 그의 생각에 오류를 발견 할 수 있습니다. 어쩌면 OP는'cin >> s '이'std :: string'을 입력하는 유일한 방법이라고 잘못 생각합니다.이 경우 내 대답이 문제를 해결할 것입니다. – Sjoerd

0

당신은 getline 사용할 수 있습니다 사용 - 일을하는 오래된 C 방법을. 그런데 왜 이걸하고 싶니?

참조 : http://www.crasseux.com/books/ctutorial/getline.html

을 아니면 두통을 좋아하는 경우에 당신은 시스템 호출을 사용할 수 있습니다!

관련 문제