我想達到這樣的效果:用戶輸入值,例如 1,2,3
Your values: 1,2,3 [1,2,3 is inputed by user in one line]
并且這個值被推送到陣列。我需要在這里檢查數字是否不大于最大數字,例如 4 并且不低于 1。
我想出了這個代碼。它需要 msg 來顯示 user 和 max num,但正如您所見,它只能回傳單個值,我不知道如何修改它以按照我的描述作業。
const int getMultipleIntAboveZero(const std::string &msg,int maxNum){
int num;
std::cout<< msg;
while(!(std::cin>>num)|| num < 1 || num > maxNum){
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout<<"\nInvalid input. Try again: ";
}
return num;
}
uj5u.com熱心網友回復:
如何獲取用戶用逗號輸入的整數陣列?
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
std::vector< int > getMultipleIntAboveZero(std::string msg, int maxNum) {
std::istringstream iss (msg);
std::string unit;
std::vector<int> nums;
int num;
while(std::getline(iss, unit, ',')) {
num = std::stoi(unit);
if (num >= 1 && num <= maxNum) {
std::cout << num << '\n';
nums.push_back(num);
} else {
std::cout<<"Invalid input. Try again\n";
}
}
return nums;
}
int main()
{
printf("Your values: ");
std::string msg;
std::cin >> msg;
getMultipleIntAboveZero(msg, 4);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516306.html
標籤:C c 11
