C++のgetline関数の使い方を解説!文字列入力の基本とサンプルコード
C++のgetline関数は、ストリームから書式なし入力として文字を抽出し、C言語形式の文字列(C文字列)として指定した配列に格納するために使用されます。文字の抽出は、区切り文字が検出されるか、n文字(終端のNULL文字「\0」を含む)がsに書き込まれるまで続けられます。
宣言
basic_istream& getline (char_type* s, streamsize n); basic_istream& getline (char_type* s, streamsize n, char_type delim);
パラメータ
- s:文字配列へのポインタです。抽出された文字は、C言語形式の文字列としてここに格納されます。
- n:書き込む最大文字数です(終端のNULL文字を含みます)。
- delim:明示的な区切り文字です。次に抽出しようとする文字がこの文字と等しい場合(
traits_type::eqで比較)、それ以上の文字抽出は停止します。
戻り値
この関数は、basic_istreamオブジェクト(*this)を返します。
使用例
#include <iostream>
using namespace std;
int main () {
char name[256], title[256];
cout << "Please, enter your name: ";
cin.getline (name,256);
cout << "Please, enter your favourite movie: ";
cin.getline (title,256);
cout << name << "'s favourite movie is " << title;
}
この例では、まずユーザーに名前の入力を求め、次にお気に入りの映画名を入力してもらっています。cin.getlineを使用することで、スペースを含む文字列でも1行全体を正しく読み取ることができるのがポイントです。
実行結果
Please, enter your name: Jack Please, enter your favourite movie: The Boss Baby Jack's favourite movie is The Boss Baby
-
C++で文字列をトークン化する方法:stringstreamとgetline()による分割テクニック
この記事では、C++における文字列のトークン化(分割)の方法について解説します。C言語では、文字配列に対してstrtok()関数を使用することで文字列を分割できましたが、C++ではstd::stringクラスを扱うため、少し異なるアプローチが必要です。C++の機能を活用して文字列を分割するには、まずstd::stringをstringstream(文字列ストリーム)に変換します。その後、getline()関数を使うことで、指定した区切り文字(デリミタ)ごとに文字列を切り出すことができます。getline()関数は、以下の3つの引数を受け取ります。入力元となる文字列ストリーム出力結果を格納する文
-
C++で文字列をトークン化(分割)する2つの方法を解説
文字列のトークン化(分割)とは、1つの文字列を区切り文字(スペースやカンマなど)を基準に、複数の部分文字列へ分割する処理のことです。C++では、標準ライブラリだけでもいくつかの方法で実現できます。本記事では、代表的な2つの方法をサンプルコード付きで紹介します。方法1:stringstreamを使って空白で分割する1つ目の方法は、stringstreamを使ってスペースで区切られた単語を順に読み取る方法です。この方法はやや制限がありますが、適切なチェックを加えれば十分に目的を果たすことができます。サンプルコード#include <vector> #include <string