假設您希望用戶為根輸入一個基數,并為根輸入另一個數字。但是,如果用戶只提供 1 個數字,則第二個輸入將默認為 2,因此是平方根。
我想知道如果在僅輸入一個數字后按下“輸入”,如何停止輸入。
我正在使用 C 。
uj5u.com熱心網友回復:
你可能很熟悉std::cin——數字輸入不區分輸入和空格;也就是說,如果你寫:
int a, b;
std::cin >> a;
std::cin >> b;
您的程式將需要 2 個數字,同時接受
1
2
或者
1 2
您想要做什么聽起來您只想接受第二種格式,并根據用戶輸入決定它是否包含一個或兩個數字。為此,請使用std::getline:
std::string line;
std::getline(std::cin, line);
然后,您需要“標記”該行,即將其拆分為由空格分隔的部分:
std::string::size_type pos = line.find(' ');
if (pos == std::string::npos)
{
// only 1 input
}
else
{
// more than 1 input, split, e.g. with "line.substr(...)"
}
完整代碼:
#include <iostream>
int main()
{
std::string line;
std::getline(std::cin, line);
std::string::size_type pos = line.find(' ');
if (pos == std::string::npos)
{
int firstnum = atoi(line.c_str());
std::cout << "One number: " << firstnum << "\n";
}
else
{
int firstnum = atoi(line.substr(0, pos).c_str());
int secondnum = atoi(line.substr(pos 1, line.size()-pos).c_str());
std::cout << "Two numbers: " << firstnum << ", " << secondnum << "\n";
}
return 0;
}
用一個號碼試運行:
1
One number: 1
使用兩個數字進行測驗:
1 2
Two numbers: 1, 2
在這里,我們目前忽略了用戶輸入兩個以上數字的可能性。您可以再次使用 進行檢查line.find,這次從 pos 1 開始(參見第二個引數)。上面的代碼也不會檢查輸入字串是否以空格開頭,這會導致 0 被識別為第一個輸入......所以它可能比 using 有點棘手std::cin(如果用于數字,它會自動跳過空格)。研究字串標記化以尋找更有彈性的分割輸入的方法。
uj5u.com熱心網友回復:
你可以試試這段代碼:
#include <iostream>
using namespace std;
int main() {
int x, y;
int sum;
cout << "Type a number: ";
cin >> x;
cout << "Type another number: ";
cin >> y;
sum = x y;
cout << "Sum is: " << sum;
return 0;
}
uj5u.com熱心網友回復:
我明白你的意思,你可以使用 ASCII 來幫助你。
下面是代碼:
#include<iostream>
using namespace std;
int main()
{
cout << "Enter two numbers:" << endl;
int num1;
int num2 = 2;
cin >> num1;
if (cin.get() == 32)
cin >> num2;
cout << num1 << "\t" << num2 << endl;
return 0;
}
這樣,如果用戶用回車鍵只輸入一個數字,num2就不會改變;如果用戶輸入一個數字,然后空格,然后輸入另一個數字,則 num2 將更改為第二個 num2。
您可以將其用作完成 sqrt 功能的參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472574.html
上一篇:包含頭檔案時遇到問題
