2014-01-19 6 views
0

저는 C++ 프로그래밍을 처음 사용하고 있으며 사용자에게 질문하는 프로그램을 만들려고합니다. 예를 들어, 여러 입력을 목록에 저장하는 방법 C++

std::string siblings; 
std::cout << "How many siblings do you have?"; //Let's say the user inputs 2 
std::cin >> siblings; 

for (int x=0;x<n;x++){ 
    std::string current; 
    std::string sibling_info; 
    std::cout << "What is the name + age of sibling #" << (x+1) << ": "; 
    std::cin >> current;      
    sibling_info.emplace_back(current); 

나는 그 사이에 공백을 입력 "요한 복음 13"로 사용자를 싶지만 공백을 넣을 때마다 프로그램은 내가 그것을 원하는 방식으로 실행되지 않으며, 사용자 요구하지 않습니다 두번.

+0

'표준 : :의 getline (표준 : CIN, 전류),'하지만 여전히 어딘가 번호와 이름을 구문 분석해야 - 당신이 우리에게 그 코드를 표시하지 않습니다 – user3125280

+0

하지만 같은 질문 : HTTP : // 유래 .com/questions/5838711/c-cin-input-with-spaces – Igor

답변

1

cin에서 입력 한 공백을 포함하는 delineated 공백입니다. std::cin >> current은 입력 된 첫 단어 만 저장합니다. 두 단어를 얻으려면 cin을 두 번 호출해야하거나 사용자 입력을받는 다른 방법으로 전환해야합니다.

std::string current; 
std::string age; 
std::string sibling_info; 
std::cout << "What is the name + age of sibling #" << (x+1) << ": "; 
std::cin >> current; //you were missing a semicolon :p 
std::cin >> age; //added 
current += " " + age;  //added  
sibling_info.emplace_back(current); 

또는 사용의 getline (당신이 #include<string> 필요) 그것을 할 수

std::string current; 
std::string sibling_info; 
std::cout << "What is the name + age of sibling #" << (x+1) << ": "; 
current = getline(cin,current); //changed      
sibling_info.emplace_back(current); 
1

한 가지 방법 :

std::string current[2]; 
... 
std::cin >> current[0] >> current[1]; 
sibling_info.emplace_back(current[0]+" "+current[1]); 
1

기능 emplace_back()는하지만 string를 들어, vector 사용할 수 있습니다. 그래서 당신은 그럼 당신은 호출 할 수 있습니다

std::vector<std::string> sibling_info; 

std::string sibling_info; 

을 변경해야

sibling_info.emplace_back(current); 

동시에, 입력에 여러 개의 입력의 수를 가능하게 할 것이다. 추가 정보를 알아 here

확인합니다.

관련 문제