今C++でプログラムを作っているところなのですが、cinを使って文字列の入力をする際に、スペースを2回入れてしまうと、エンターキーを押した時点で、次の情報の入力に移らずにプログラムが終了してしまいます。これはどうやって回避したらいいのでしょうか?
キーボード入力時のスペースについて
Re: キーボード入力時のスペースについて
どういう入力をしたのかを具体的に書きましょう。Makin さんが書きました:スペースを2回入れてしまうと、エンターキーを押した時点で、次の情報の入力に移らずにプログラムが終了してしまいます。これはどうやって回避したらいいのでしょうか?
東京都品川区大崎[スペース]かずま[スペース]日本[エンター]
このようにスペースを 2つ入力すると、3つの文字列を入力したのですから、
次の入力に移らずにプログラムが終了するのは当然です。
おそらく、次のように入力して、思い通りにならないと言っているのでしょう。
東京都[スペース]品川区[スペース]大崎[エンター]
istream::getline を使いましょう。
#include <iostream>
using namespace std;
int main()
{
char address[100], name[30], nationality[30];
cin.getline(address, 100);
cin.getline(name, 30);
cin.getline(nationality, 30);
cout << address << ':' << name << ':' << nationality << endl;
}
Re: キーボード入力時のスペースについて
かずまさん、回答ありがとうございます。C++のコマンドをあまり把握していないので、もう少し勉強しようと思います。
Re: キーボード入力時のスペースについて
コマンドとは何でしょうか?Makin さんが書きました:C++のコマンドをあまり把握していないので、もう少し勉強しようと思います。
解決したのなら、「解決!」にチェックを付けて送信してください。
他にも解決にしていない投稿があるようです。
なお、
cin.getline(address, 100) の getline は、istreamクラスのメンバ関数ですが、
getline(cin, address) の getline は stringクラスのメンバ関数ではありません。
string::getline と書いてしまったことをお詫びします。
Re: キーボード入力時のスペースについて
クイック返信で返事をしていたので、解決!のチェックがあることに気が付きませんでした。すみません。