#include <string>
std::string input;
std::cin >> input;
ユーザーが「Hello World」を入力したいとします。しかしcin
は2つの単語の間のスペースで失敗します。 cin
にHello 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);
これによりエラーが発生します。何か案は?
あなたは cin.getline()
を使う必要があります:
char input[100];
cin.getline(input,sizeof(input));
「失敗」しません。読むのをやめるだけです。字句トークンを「文字列」と見なします。
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::string
sではなくCスタイルのchar
バッファーで動作することに注意してください。
更新
編集した質問は、元の質問とほとんど似ていません。
getline
を文字列または文字バッファーではなく、int
にしようとしていました。ストリームのフォーマット操作は、operator<<
およびoperator>>
でのみ機能します。それらのいずれかを使用する(および複数ワードの入力に応じて調整する)か、getline
を使用して、事後的にint
に字句的に変換します。
つかいます :
getline(cin, input);
関数はで見つけることができます
#include <string>
標準ライブラリは、入力ストリームから空白を消費するws
と呼ばれる入力関数を提供します。あなたはこのようにそれを使うことができます:
std::string s;
std::getline(std::cin >> std::ws, s);
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;
}
ここ から例を取ってください。詳細と例については、チェックしてください。
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
}