普通にやると改行で区切られ、行単位でしか取り込めない。改行コードも無くなる。
cin >> a; cout << "---" << a << "---" << endl;
$ ./a.out hoge ←入力 ---hoge--- ←出力
std::getline - cppreference.com
istream& std::getline( istream& is, string& s ); istream& std::getline( istream& is, string& s, charT delimiter );
デフォルトのデリミタは改行コードになっている
デリミタは\0とか適当なのを1文字だけ指定出来る。
#include <iostream> #include <string> using namespace std; int main(){ string a; // cin >> a; getline( cin, a, '\x03' ); cout << "---" << a << "---" << endl; return 0; }
$ ./a.out aaaaa bbbbb ccccc ← ここでCTRL+D ---aaaaa bbbbb ccccc ---