我是 C++ 的初学者,我想知道您是否可以帮助我。
我正在制作一个程序,这个程序需要进行错误检查。 那么,如何才能只接受整数而忽略其他数据类型呢?
例如:
int tilenumber;
cin >> tilenumber;
cin.clear();
cin.ignore();
cin >> words;
当我的代码运行时:
输入:1 嘿,我想跳舞
输出:我想跳舞
///
我想要的:
案例一: 输入:1
嘿,我想跳舞
输出:嘿,我想跳舞
案例二: 输入:1e
嘿,我想跳舞
输出:嘿,我想跳舞
为什么我的代码不起作用?
我尝试用上面的代码解决我的问题,但它不起作用。
谢谢。
最佳答案
读取整个字符串并利用 std::stoi功能:
#include <iostream>
#include <string>
int main() {
std::cout << "Enter an integer: ";
std::string tempstr;
std::getline(std::cin, tempstr);
try {
int result = std::stoi(tempstr);
std::cout << "The result is: " << result;
}
catch (std::invalid_argument) {
std::cout << "Could not convert to integer.";
}
}
另一种方法是利用 std::stringstream并进行解析:
#include <iostream>
#include <string>
#include <sstream>
int main() {
std::cout << "Enter an integer: ";
std::string tempstr;
std::getline(std::cin, tempstr);
std::stringstream ss(tempstr);
int result;
if (ss >> result) {
std::cout << "The result is: " << result;
}
else {
std::cout << "Could not convert to integer.";
}
}
关于c++ - 如何只接受整数而忽略其他数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46345430/