2016-07-29 3 views
-1

編集:私が言ったように、私はこの質問が以前に尋ねられたことを知っていますが、解決策のどれも私のために働くようには見えませんでした。少なくとも、投稿を読んでからdownvotingしてみてください。std :: cinの読み込みスペースを作るにはどうすればいいですか?

私はこの質問が以前このサイトで少し尋ねられてきたことは知っていますが、私の特定のプログラムでうまく動作するようにする方法を理解できていないようです。本質的に、私は少しのMad Libsタイプのゲームを作成しています。プレイヤーはそれをストーリーに収めるために特定のものに入力しなければなりません。これは、ユーザの入力に空白がない場合でも、2番目の人がスペースにスローした場合、プログラムは質問全体をスキップできます。ここに私のコードは次のとおりです。

int main(){ 

int selection; 

//News Report Variables 
std::string nrfullname; 
std::string nrcrime; 
std::string nradjective; 
std::string nrtown; 
std::string nrpluralnoun; 
std::string nrnounnotplace; 
std::string nrverb; 
std::string nradjective2; 
std::string nrfullname2; 
std::string nrnounnotplace2; 

std::cout << "Welcome to Mad Libs! Please, pick a story!" << std::endl; 
std::cout << "1. News Report" << std::endl; 
std::cin >> selection; 

if (selection == 1) { 
    std::cout << "We need a full name of someone." << std::endl; 
    std::cin << nrfullname; 
    std::cout << "We need a crime." << std::endl; 
    std::cin >> nrcrime; 
    std::cout << "We need an adjective." << std::endl; 
    std::cin >> nradjective; 
    std::cout << "We need a town." << std::endl; 
    std::cin >> nrtown; 
    std::cout << "We need a plural noun." << std::endl; 
    std::cin >> nrpluralnoun; 
    std::cout << "We need a noun that is NOT a place." << std::endl; 
    std::cin >> nrnounnotplace; 
    std::cout << "We need a verb." << std::endl; 
    std::cin >> nrverb; 
    std::cout << "We need another adjective." << std::endl; 
    std::cin >> nradjective2; 
    std::cout << "We need a full name of someone else." << std::endl; 
    std::cin >> nrfullname2; 
    std::cout << "We need another noun that is NOT a place." << std::endl; 
    std::cin >> nrnounnotplace2; 
    } 

あなたは、おそらくほとんどの人はそれが誰かのフルネームを要求するスペースを置くことを選ぶだろう、想像できるように(私は確信して私が知っているでしょう)。ポイントは、もし彼らがそのスペースに入れると、それは「犯罪」の質問をスキップし、単に形容詞の質問に移ります。あなたが私にちょっとだけストレスを与えていて、私が試したソリューションのすべてが問題を悪化させたか、それを解決するのに何もしなかったので、これを正しく動作させる方法をあなたに教えてもらえれば有益でしょう。

おかげで、 MTS

+2

あなたは 'std :: getline'が必要です... – LogicStuff

+0

メモt hat 'std :: cin'は何も読みません。これは、コンソールへのインタフェースを提供するオブジェクトです。それは文字と値を読み取る**関数**です。 –

答えて

1

代わりのstd::cin << nrfullnameあなただけのstdの次のオプションの区切り文字

0

使用するまでnrfullnameに入力ストリームからstd::getline(std::cin,nrfullname [, delim])

std::getline抽出文字を使用し、結果を格納する必要があります。 :getlineとwrite:cin.getline(x,sizeof(x))

関連する問題