मैं एक प्रोग्राम बनाने की कोशिश कर रहा हूं ताकि उपयोगकर्ता को एक ऑपरेशन का इस्तेमाल करने के लिए कहा जा सके और यह दो नंबरों के साथ काम करने के लिए कहेगा। लेकिन अगर उपयोगकर्ता एक नंबर दर्ज करता है और उस पर एक अक्षर है, तो प्रोग्राम को उपयोगकर्ता को एक और इनपुट मांगने के लिए फिर से संकेत देना चाहिए।
#include<iostream>
using namespace std;
void operation(int a);
class Numbers{
public:
int num1, num2;
float result;
};
int main(){
Numbers input;
int *ptr1 = &input.num1;
int *ptr2 = &input.num2;
float *ptr3 = &input.result;
int range = 0;
cout<<"Enter First Number: ";
while(!(cin>>*(ptr1+range))){
cout<<"That's not a number!\n";
cout<<"\nEnter First Number: ";
cin.clear();
cin.ignore(32767, '\n');
}
cout<<"Enter Second Number: ";
while(!(cin>>*(ptr1+range))){
cout<<"That's not a number!\n";
cout<<"\nEnter Second Number: ";
cin.clear();
cin.ignore(32767, '\n');
}
}
तो इस कार्यक्रम में जब कोई उपयोगकर्ता एक चरित्र में प्रवेश करता है, तो यह उपयोगकर्ता को दूसरे में प्रवेश करने के लिए प्रेरित करता है। लेकिन समस्या यह है कि जब मैं एक संख्या के भीतर एक पत्र दर्ज करता हूं, तो प्रोग्राम फिर से संकेत नहीं देता है लेकिन यह अगली पंक्ति में कूद जाता है।
पहला नंबर दर्ज करें: t यह कोई संख्या नहीं है!
Enter First Number: 4e // as you can see, this is what happens, it did not reprompt but it jumped to the next line of code
Enter Second Number: That's not a number!
Enter Second Number:
2 जवाब
आप रूपांतरण जांच को पूरा करने के लिए std::stoi
का उपयोग कर सकते हैं।
string number_string
cin >> number_string;
size_t number_end;
int number;
try {
num = stoi(line, &number_end);
} catch (...) {
// invalid number
}
if (number_end < line.size() && !isspace(line[number_end])) {
// invalid number
}
शायद आप isdigit का उपयोग कर सकते हैं। मूल रूप से यह जांचता है कि स्ट्रिंग एक अंक है या नहीं, तो आप इसे जबकि कथन में उपयोग कर सकते हैं। ध्यान दें कि इसे एक चरित्र पर चेक किया जाना चाहिए।
while (!isdigit(some_variable_that_gets_cin)) {
....
}
नमूना कैसे प्राप्त करें cin
char[10] number;
cin >> number;
isdigit(number);
ptr = <int> number;
संबंधित सवाल
नए सवाल
c++
C ++ एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा है। यह मूल रूप से C के विस्तार के रूप में डिज़ाइन किया गया था और इसमें एक समान सिंटैक्स है, लेकिन यह अब पूरी तरह से अलग भाषा है। C ++ कंपाइलर के साथ संकलित कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें। विशिष्ट मानक संशोधन [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] या [C ++ 23], आदि से संबंधित प्रश्नों के लिए संस्करण-विशिष्ट टैग का उपयोग करें। ।
e4
e
और44 34
को आजमाया है?std::stoi
का उपयोग करें, कृपया यहां देखें कि यह उदाहरणों के साथ कैसे काम करता है, ताकि आपको इस बात की गहरी समझ हो कि क्या हो रहा है: en.cppreference.com/w/cpp/string/basic_string/stol