C++初学者在这里。想知道这段关于限制用户输入的 Java 代码的语法是什么。这是我编写的Java代码的示例
while (!in.hasNext("[A-Za-z]+")){}
其中"in"是我的扫描仪变量。这段代码在输入不是实数时运行,并返回一条错误消息,其中包含再次输入内容的选项。我一直无法在C++上找到与这种"范围"条件等效的等效条件。任何帮助将不胜感激。
编辑:我尝试在 Dev C++中使用正则表达式函数,但它给了我这样的警告:
#ifndef _CXX0X_WARNING_H
#define _CXX0X_WARNING_H 1
#if __cplusplus < 201103L
#error This file requires compiler and library support for the
ISO C++ 2011 standard. This support is currently experimental, and must be
enabled with the -std=c++11 or -std=gnu++11 compiler options.
#endif
#endif
这是否意味着我不能在开发C++中使用正则表达式函数?
示例:
cin >> inputStr;
if (std::regex_match (inputStr, std::regex("[A-Za-z]+") )) {
// do something, will you ?
}
注意:您需要包含<regex>
。
更多信息: http://www.cplusplus.com/reference/regex/regex_match/
如果你想循环直到你得到一个实数,那么你可以使用:
do
{
cin >> input;
} while(std::regex_match (input, std::regex("[A-Za-z]+")));
您还可以使用 std::stod()
将std::string
转换为double
。 这样做将确保您获得一个有效的实数,因为一个数字并且其中包含 e/E。 您可以通过以下方式执行此操作:
std::string input;
double value;
size_t pos;
do
{
cin >> input;
value = stod(input, &pos);
} while (pos < input.size());