【发布时间】:2013-03-25 18:41:25
【问题描述】:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <regex.h>
using namespace std;
string input;
int main()
{
//Input .ply file
ifstream inputFile ("input.ply");
//input file is read
if (inputFile.is_open())
{
int i = 1; //Line iterator
int vertices = 0;
int faces = 0;
vector<float> anatomy;
vector<float> normals;
vector<int> triangles;
string a,line;
getline(cin,line);
while (inputFile.good())
{
//Take number from line 4, set as variable "vertices"
if (i == 4)
{
regex pattern("[^0-9]+");
getline (inputFile,line);
vertices = show_match(line, pattern);
}
//Take number from line 11, set as variable "triangles"
if (i == 11)
{
regex pattern("[^0-9]+");
getline (inputFile,line);
faces = show_match(line, pattern);
}
if (i == 13)
{
i++;
break;
}
i++;
}
waitKey(0);
}
else
{
cout << "Cannot read mesh, please try again." << endl;
}
return 0;
}
只是试图从字符串中读取并提取整数,所以我添加了正则表达式头和其他文件以使用正则表达式。我正在使用 Dev-C++ 并将正则表达式的文件提取到它们各自的 lib、bin 和 include 文件夹中的“C :\Dev-Cpp",但是当我尝试编译我的程序时仍然收到以下错误:
'regex'未声明(首先使用这个函数)
【问题讨论】:
-
regex.h是从哪里来的? -
如果你使用的是 GCC,它不支持 C++11 的正则表达式。
-
很可能是提供 C 正则表达式 API 的 POSIX 标头。与 C++11 无关,但如果按照 C API 使用,则可以改为使用。 -
Dev-C++ 与 C++11 不兼容吗?
-
Dev-C++ 是 IDE,而不是编译器。与 C++11 兼容或不兼容的是编译器,而这种兼容性只是程度问题。我不知道你的编译器是什么,但它会编译 C 和 C++,并且会提供 C 头文件和库以及 C++ 的。我相信您将 C 正则表达式 API 标头误认为 C++ 正则表达式类标头。
标签: c++ regex string integer dev-c++