ページ 1 / 1
キーボード入力時のスペースについて
Posted: 2017年4月22日(土) 10:16
by Makin
今C++でプログラムを作っているところなのですが、cinを使って文字列の入力をする際に、スペースを2回入れてしまうと、エンターキーを押した時点で、次の情報の入力に移らずにプログラムが終了してしまいます。これはどうやって回避したらいいのでしょうか?
コード:
int main(){
char address[100];
char name[30];
char nationality[30];
cin >> address;
cin >> name;
cin >> nationality;
return 0;
}
Re: キーボード入力時のスペースについて
Posted: 2017年4月22日(土) 14:09
by かずま
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;
}
C++ なんだから、string::getline を使ったほうがもっといいと思います。
コード:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string address, name, nationality;
getline(cin, address);
getline(cin, name);
getline(cin, nationality);
cout << address << ':' << name << ':' << nationality << endl;
}
Re: キーボード入力時のスペースについて
Posted: 2017年4月22日(土) 14:19
by Makin
かずまさん、回答ありがとうございます。C++のコマンドをあまり把握していないので、もう少し勉強しようと思います。
Re: キーボード入力時のスペースについて
Posted: 2017年5月02日(火) 19:54
by かずま
Makin さんが書きました:C++のコマンドをあまり把握していないので、もう少し勉強しようと思います。
コマンドとは何でしょうか?
解決したのなら、「解決!」にチェックを付けて送信してください。
他にも解決にしていない投稿があるようです。
なお、
cin.getline(address, 100) の getline は、istreamクラスのメンバ関数ですが、
getline(cin, address) の getline は stringクラスのメンバ関数ではありません。
string::getline と書いてしまったことをお詫びします。
Re: キーボード入力時のスペースについて
Posted: 2017年5月03日(水) 02:21
by Makin
クイック返信で返事をしていたので、解決!のチェックがあることに気が付きませんでした。すみません。