そのため、私は周りを見回しましたが、While ループ中に cin で何が起こっているのかを理解できませんでした。私は本 C++ Primer (第 5 版) を読んでいますが、演習の 1 つ中に、while ループを終了しない限り、cin を使用して文字列を取得できないことに気付きました。getline() を使用するだけでこの問題を修正しました。
現在の演習の目標は、0 ~ 15 の値からユーザー入力を求め、その数値を「16 進数」に変換することです (ここで、0 = 1、1 = 2、2 = 3、...、10 = A、11 = B)。本なしでこれを試みて失敗しましたが、本のコードに疑問を抱き始めました。本のコードは次のとおりです。
//Note: <iostream> and <string> have been included. using namespace std is used
const string hexdigits = "0123456789ABCDEF";
cout << "Enter a series of numbers between 0 and 15"
<< " separated by spaces. Hit ENTER when finished: "
<< endl;
string result;
string::size_type n;
while(cin >> n)
if (n < hexdigits.size())
result += hexdigits[n];
cout << "Your hex number is: " << result << endl;
このコードを実行すると、コードを入力せずにEnterキーを押した後、whileループが終了することはありません(本質的に空白の入力を与えると思いますか?)。
私がここにいる理由は 2 つあります。
1) このコードが機能しないのはなぜですか? 2) 正しい方向に微調整していただければ幸いですが、このコードを正しく実行する方法についての回答はありません
理由 2 を妥協せずに理由 1 を受け取ることができない場合は、むしろ理由 1 を満たしてもらいたいと思います。
クイック編集: 申し訳ありませんが、Visual Studio 2012 を使用しています。