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;
}
[quote="Makin" id=3,19079,144735]スペースを2回入れてしまうと、エンターキーを押した時点で、次の情報の入力に移らずにプログラムが終了してしまいます。これはどうやって回避したらいいのでしょうか?[/quote]
どういう入力をしたのかを具体的に書きましょう。
東京都品川区大崎[スペース]かずま[スペース]日本[エンター]
このようにスペースを 2つ入力すると、3つの文字列を入力したのですから、
次の入力に移らずにプログラムが終了するのは当然です。
おそらく、次のように入力して、思い通りにならないと言っているのでしょう。
東京都[スペース]品川区[スペース]大崎[エンター]
istream::getline を使いましょう。
[code]
#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;
}
[/code]
C++ なんだから、string::getline を使ったほうがもっといいと思います。
[code]
#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;
}
[/code]