Eclipse 在 push_back 行上显示以下错误:
无效参数的候选者是:
void push_back(const std::basic_string<char,std::char_traits<char>,std::allocator<char>> &)
我的问题是,如何确保向量包含字符串而不是 basic_strings?
我在另一段代码中发现我想访问这个向量,但我在编译它时遇到了麻烦,它似乎后来知道它是一个 basic_string 而不是“std::string”,在当前上下文中我知道我只会使用 char 但我想将超类保留在那里,以便将来如果我换成 w-char 等,我不必调整任何东西。
我已经尝试将其转换为字符串,但这似乎不起作用
std::string test = (std::string)tokens[1];
最终目标是用该向量构造一些对象
if(tokens->size() == 3){
TestObject test = new TestObject(tokens[1],)tokens[2])
}
这是我在 Stackoverflow 上找到的函数,由 stackoverflow 用户 Function Origin提出
感谢您的帮助。
void TestClass::splitString(const std::string &str, std::vector<std::string>* tokens){
boost::char_separator<char> sep(",");
std::string separator;
boost::tokenizer< boost::char_separator<char> > tok(str,sep);
for(boost::tokenizer< boost::char_separator<char> >::iterator it=tok.begin(); it != tok.end(); ++it)
{
tokens->push_back(*it);
}
}
没有匹配函数调用'TestObject::defineX(std::basic_string*)'</p>
accessing with defineX(vector[1].data());
没有匹配函数调用'TestObject::defineX(std::vector >&)'</p>
accessing with defineX(vector[1]);
该函数的定义声明如下(也许这是问题所在?):
typedef std::string td_MAP_KEY;
td_MAP_VALUE * TestObject::defineX(td_MAP_KEY key);
我这样调用该方法,如果您热衷于编译它,它应该可以工作,不幸的是我无法在此处粘贴完整的代码,但下面的代码应该这样做:
std::string x = "one,two,three,four"
std::vector<std::string> * splittedString = new std::vector<std::string>;
splitString(x,splittedString);
TestObject * object = new TestObject();
object->defineX(splittedString[1]);