#include <iostream>
using namespace std;
int Variable() {
char Letter= ' ';
cout << "Your Name: ";
cin >> Letter;
cout << "Your first Letter is : " << Letter;
return 0;
}
int userInput(int number)
{
int input = 0;
cout << "Give me your " << number << ". number: ";
cin >> input;
cout << "\n";
return input;
}
int main() {
Variable();
int input1 = 0;
int input2 = 0;
input1 = userInput(1);
input2 = userInput(2);
cout << "Result: " << (input1 * input2) << "\n\n";
return 0;
}
輸出:
Your Name: Kevin
Your first Letter is : K
Give me your 1:
Give me your 2:
Result: 0
我在控制臺中寫了一個名字,然后我得到了第一個字母,但之后我無法輸入這兩個數字,因為程式結束了。我不明白為什么程式會跳過 userInput 函式。
編輯:
#include <iostream>
using namespace std;
int Variable() {
char name[MAX_NAME_LENGTH];
cout << "Your Name: ";
cin.ignore(0);
cin.getline (name, MAX_NAME_LENGTH);
char firstLetter = name[0];
cout << "Your first Letter is: " << firstLetter << endl;
return 0;
}
現在另一個cin正在int userInput(int number)運行,您也可以毫無問題地輸入像 Mary Jo 這樣的名字。謝謝你的幫助。
uj5u.com熱心網友回復:
基本上問題是您提示用戶提供姓名而您只閱讀一個字符K。
結果是,當您嘗試讀取數字時,仍有一些字母在等待讀取evin。因此嘗試讀取整數會導致錯誤并且值input保持不變。
一旦std::cin進入錯誤狀態,所有其他讀取都將失敗,直到您清除錯誤標志并丟棄讀取導致錯誤的字符。
uj5u.com熱心網友回復:
猜測,您假設cin >>逐行讀取輸入,丟棄未分配給右側運算元的任何資料。
但是,盡管在互動式運行程式時必須以整行為單位提供輸入,但輸入通常不會以這種方式消耗。粗略地說,每個>>操作將消耗cin適合右側運算元型別的值的盡可能多的資料,其余的由后面的操作消耗。
因此,隨著...
char Letter= ' ';
cout << "Your Name: ";
cin >> Letter;
...從輸入中只讀取一個字符到Letter,因為Letter是 a char。在您的示例中,該字符是 a 'K',并evin\n等待讀取。
當您然后嘗試讀入intwith ...
int input = 0;
cout << "Give me your " << number << ". number: ";
cin >> input;
...>>操作失敗(不消耗任何輸入),因為下一個等待讀取的資料不能解釋為int.
uj5u.com熱心網友回復:
char Letter= ' ';
cin >> Letter;
int input = 0;
cin >> input;
你需要研究cin是如何作業的。字母是字符,輸入是整數。你從 cin 請求一個字符,然后請求一個 int。您需要了解/了解 cin/cout 在與 >> 運算子一起用于不同型別的變數(在您的情況下為 int 和 char)時如何作業。
uj5u.com熱心網友回復:
由于您試圖提示用戶輸入數字,因此您需要包含一個暫停執行流程并等待用戶輸入的功能。一個例子是包含在 <conio.h> 中的 _getch()
這是您修改后的代碼的示例:
#include <iostream>
#include <conio.h>
using namespace std;
int Variable() {
char Letter = ' ';
cout << "Your Name: ";
cin >> Letter;
cout << "Your first Letter is : " << Letter << endl;
return 0;
}
int userInput(int number)
{
char input;
cout << "Give me your #" << number << " number: \n";
input = _getch();
cout << "i: " << input << endl;
return input;
}
int main() {
Variable();
int input1 = 0;
int input2 = 0;
input1 = userInput(1) - '0';
input2 = userInput(2) - '0';
cout << input1 << endl;
cout << input2 << endl;
cout << "Result: " << (input1 * input2) << "\n\n";
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/331744.html
上一篇:free():在呼叫多載賦值運算子時在tcache2中檢測到雙重釋放
下一篇:我無法將幾何點的值分配給變數
