Java to C++ syntax



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());

相关内容

  • 没有找到相关文章

最新更新