標準入力ストリームから入力を取得しています。といった、
1 2 3 4 5
または
1
2
3
4
5
私は使用しています:
std::string in;
std::getline(std::cin, in);
しかし、それは改行までしかつかないのですか? iosteam、string、およびcstdlibのみを使用して改行OR whitespace(s)で区切られているかどうかを入力するにはどうすればよいですか?
ただ使用する:
_your_type x;
while (std::cin >> x)
{
// use x
}
_
_operator>>
_はデフォルトで空白をスキップします。一度にいくつかの変数を読み込むために物事を連鎖させることができます:
_if (std::cin >> my_string >> my_number)
// use them both
_
getline()
はすべてを1行で読み取り、それが空であるか、スペースで区切られた多数の要素を含むかを返します。オプションの代替デリミタala getline(std::cin, my_string, ' ')
を提供する場合、それはまだあなたが望むようには思わないでしょう。タブは_my_string
_に読み込まれます。
おそらくこれには必要ありませんが、すぐに興味があるかもしれないかなり一般的な要件は、改行で区切られた単一の行を読んでから、コンポーネントに分割することです...
_std::string line;
while (std::getline(std::cin, line))
{
std::istringstream iss(line);
first_type first_on_line;
second_type second_on_line;
third_type third_on_line;
if (iss >> first_on_line >> second_on_line >> third_on_line)
...
}
_
getline
へのオプションの引数として'q'
を使用します。
#include <iostream>
#include <sstream>
int main() {
std::string numbers_str;
getline( std::cin, numbers_str, 'q' );
int number;
for ( std::istringstream numbers_iss( numbers_str );
numbers_iss >> number; ) {
std::cout << number << ' ';
}
}
ユーザーがEnterキーまたはスペースを押すことは同じです。
int count = 5;
int list[count]; // array of known length
cout << "enter the sequence of " << count << " numbers space separated: ";
// user inputs values space separated in one line. Inputs more than the count are discarded.
for (int i=0; i<count; i++) {
cin >> list[i];
}
std :: getline(stream、where to ?, delimiter ie
std::string in;
std::getline(std::cin, in, ' '); //will split on space
または、行を読み取ってから、希望する区切り文字に基づいてトークン化できます。
#include <iostream>
using namespace std;
string getWord(istream& in)
{
int c;
string Word;
// TODO: remove whitespace from begining of stream ?
while( !in.eof() )
{
c = in.get();
if( c == ' ' || c == '\t' || c == '\n' ) break;
Word += c;
}
return Word;
}
int main()
{
string Word;
do {
Word = getWord(cin);
cout << "[" << Word << "]";
} while( Word != "#");
return 0;
}
int main()
{
int m;
while(cin>>m)
{
}
}
スペースまたは行で区切られている場合、これは標準入力から読み取ります。