web-dev-qa-db-ja.com

std :: cinにスペースが入っていますか?

#include <string>

std::string input;
std::cin >> input;

ユーザーが「Hello World」を入力したいとします。しかしcinは2つの単語の間のスペースで失敗します。 cinHello World全体を取り込ませるにはどうすればよいですか?

私は実際にこれを構造体でやっています、そしてcin.getlineはうまくいかないようです。これが私のコードです:

struct cd
{
    std::string CDTitle[50];
    std::string Artist[50];
    int number_of_songs[50];
};

std::cin.getline(library.number_of_songs[libNumber], 250);

これによりエラーが発生します。何か案は?

118
dukevin

あなたは cin.getline() を使う必要があります:

char input[100];
cin.getline(input,sizeof(input));
86
Pete

「失敗」しません。読むのをやめるだけです。字句トークンを「文字列」と見なします。

std::getline を使用します。

int main()
{
   std::string name, title;

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

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

   std::cout << name << "'s favourite movie is " << title;
}

これはstd::istream::getlineと同じnotであり、std::stringsではなくCスタイルのcharバッファーで動作することに注意してください。

更新

編集した質問は、元の質問とほとんど似ていません。

getlineを文字列または文字バッファーではなく、intにしようとしていました。ストリームのフォーマット操作は、operator<<およびoperator>>でのみ機能します。それらのいずれかを使用する(および複数ワードの入力に応じて調整する)か、getlineを使用して、事後的にintに字句的に変換します。

つかいます :

getline(cin, input);

関数はで見つけることができます

#include <string>
23
Gautham Vinod

標準ライブラリは、入力ストリームから空白を消費するwsと呼ばれる入力関数を提供します。あなたはこのようにそれを使うことができます:

std::string s;
std::getline(std::cin >> std::ws, s);
16
dev gr

Cinで.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;
}

ここ から例を取ってください。詳細と例については、チェックしてください。

11
Cody

Cのやり方

Cstdioにあるgets関数を使用できます(cのstdio.h)。

#include<cstdio>
int main(){

char name[256];
gets(name); // for input
puts(name);// for printing 
}

C++のやり方

getsはc ++ 11で削除されました。

[推奨]:string.hにある getline(cin、name) またはiostream自体にある cin.getline(name、256) を使用できます。

#include<iostream>
#include<string>
using namespace std;
int main(){

char name1[256];
string name2;
cin.getline(name1,256); // for input
getline(cin,name2); // for input
cout<<name1<<"\n"<<name2;// for printing
}
4
abe312