【发布时间】:2014-07-23 22:50:15
【问题描述】:
我有一个迭代器类型:
std::map<int, std::string>::const_iterator
如您所见,地图正在存储std::strings。
我正在尝试使用以下方法提取值:
x.second.c_str()
并将其传递给函数以调用 regex.h 函数 regexec(),该函数接受 char*。做这个的最好方式是什么?我从这种方法中收到basic_string 编译错误。
更新:
std::map<int, std::string> map;
.
.
.
std::map<int, std::string>::const_iterator f = map.find("something");
if (f != map.end()) {
my_func(f->second.c_str());
.
.
.
.
void my_func(char* c){
std::cout << c << std::endl; //This causes a segmentation fault
}
【问题讨论】:
-
什么是 x?如果它是一个迭代器,你应该做 x->second.c_str()
-
请提供SSCCE,以便其他人了解您的具体问题。
-
1)
regexec似乎接受const char*,这是一个巨大的差异。 2) 如果你去找机械师说“我的车出了点问题”,他将无法提供帮助。此处同样适用:显示car代码并准确告诉我们 什么 有问题,即提供错误消息。 -
x->second.c_str() 也许?