私が理解しているように、抽出演算子は最初に空白をスキップし、空白またはストリームの終わりに遭遇すると停止します。noskipwsを使用すると、先頭の空白を無視するのをやめることができます。
noskipwsを使用した次のプログラムがあります。
#include <iostream>
using namespace std;
int main()
{
char name[128];
cout<<"Enter a name ";
cin>>noskipws>>name;
cout<<"You entered "<<name<<"\n";
cout<<"Enter another name ";
cin>>name;
cout<<"You entered "<<(int)name[0]<<"\n";
return 0;
}
私の質問は次のとおりです。
最初の入力として「John」と入力すると、2番目のcin >>操作は入力を待機せず、宛先、つまり名前配列に何もコピーしません。宛先文字列を空に設定するだけでなく、2番目のcin>>が少なくとも改行またはストリームの終わりを転送することを期待していました。なぜこうなった ?
最初のcin>>ステートメントの入力として「JohnSmith」と入力した場合も同じことがわかります。2番目のcin>>ステートメントがスペースまたは「Smith」を宛先変数にコピーしないのはなぜですか?
プログラムの出力は次のとおりです。
Enter a name John
You entered John
Enter another name You entered 0
Enter a name John Smith
You entered John
Enter another name You entered 0
ありがとう!!!