2014-09-16 3 views
0

cin.get() 또는 cin.getline()을 사용하여 문자열 인수로 함수 호출을 수행 할 수 있습니까?cin.get() 또는 .getline() 인수로 함수 호출 사용

그렇지 않으면 어떻게 콘솔에서이 같은 함수 호출을 사용하여 사용자 입력을 얻을 수 있습니까?

void setString(string str); 
string stringText;  

void setString(string str) { 
    stringText = str; 
} 

int main() { 
    setString(cin.getline()); 
    return 0; 
} 

답변

2

:

setString(str); 
+0

나는 그것을 생각하지 않았다, 고마워! 이것은 모든 나의 미래의 프로젝트에서 나를 도울 수 있습니다. – CodeMonkey

1

cin.getline()std::string은 그래서 당신은 함수에 매개 변수로 직접 전달할 수 없습니다 반환하지 않습니다. 이

#include <string> 
#include <iostream> 

int main() 
{ 
    std::string stringText;  

    // puts the input you type into stringText 
    std::getline(std::cin, stringText); 

    // Now do what you like with stringText 
    std::cout << "You typed: " << stringText << '\n'; 

    return 0; 
} 
+0

입력 해 주셔서 감사합니다. 매우 통찰력있는. – CodeMonkey

1

은 아마 당신이 뭔가를 원하는 :

당신은 다음 함수에 그 변수를 전달할 변수

std::string str; 
cin >> str; 

에 입력을 저장해야 입력 스트림과 문자열을 매개 변수로 취하는 getline이라는 free 함수입니다. r이고, 두 번째는 out 매개 변수입니다. 문자열이 아닌 전달 된 스트림 객체를 반환합니다.

당신은 그러나 문자열을 다른 모든 입력 스트림처럼 cin 읽고 기간에서 실패한 상태에있을 수 있다는

std::string getConsoleLine() 
{ 
     std::string str; 
     std::getline(std::cin, str); 
     return str; 
} 

주를 반환하는 함수를 직접 작성할 수 있습니다. 당신은 당신의 기능을 어떤 플래그라도 지우고, 그 안에 남아있는 것을 무시할 수 있습니다.

std::string getConsoleLine() 
{ 
    // as a precaution add this lines 
    std::cin.clear(); 
    std::cin.ignore(std::numeric_limits<streamsize>::max()); 

    std::string str; 
    std::getline(std::cin, str); 
    return str; 
} 

그러면 함수에 전달할 수 있습니다.

setString(getConsoleLine());