C++ 如何将字符串传递给C++;?

C++ 如何将字符串传递给C++;?,c++,string,vector,char,C++,String,Vector,Char,我尝试在C++中对 .进行字符串分割,然后将第一个分割字符串传递给另一个方法,该方法接受代码> const char *键。但每次我这样做,我总是会有一个例外- 以下是我的密码- istringstream iss(key); std::vector<std::string> tokens; std::string token; while (std::getline(iss, token, '.')) { if (!token.empty()) { toke

我尝试在C++中对<代码> .<代码>进行字符串分割,然后将第一个分割字符串传递给另一个方法,该方法接受代码> const char *键<代码>。但每次我这样做,我总是会有一个例外-

以下是我的密码-

istringstream iss(key);
std::vector<std::string> tokens;
std::string token;
while (std::getline(iss, token, '.')) {
    if (!token.empty()) {
        tokens.push_back(token);
    }
}

cout<<"First Splitted String: " <<tokens[0] << endl;
attr_map.upsert(tokens[0]); //this throws an exception
}
下面是我经常遇到的一个例外-

no matching function for call to AttributeMap::upsert(std::basic_string<char>&)
调用AttributeMap::upsert(std::basic_string&)时没有匹配的函数
是否缺少任何内容?

用于获取指向“以空结尾的字符数组的指针,该数组的数据与字符串中存储的数据等效”(引用文档中的内容)

你应该使用

有关
c_str()
函数的详细信息,请查看参考资料


出现错误的原因是
upsert
函数需要
const char*
,但传递的是
std::string
,类型不匹配。

这既不是崩溃,也不是异常。这是一个编译器错误。您可以通过在适当的位置附加
.c_str()
并额外阅读文档来解决此问题。
no matching function for call to AttributeMap::upsert(std::basic_string<char>&)
attr_map.upsert(tokens[0].c_str()); //this won't throw an exception
attr_map.upsert(tokens[0].c_str())
                        //^^^