错误:类型' char&'的非const引用的初始化无效来自临时的#char;'
我在很多帖子上看到了上述错误,但我尝试的所有内容都没有解决。
我有以下功能:
vector<string> splitString(const string& str, const char& ch)
{
string next;
vector<string> result;
for (string::const_iterator it = str.begin(); it != str.end(); it++)
{
if (*it == ch)
{
if (!next.empty())
{
result.push_back(next);
next.clear();
}
}
else
{
next += *it;
}
}
if (!next.empty())
{
result.push_back(next);
}
return result;
}
它接受一个字符串和一个字符,并根据给定的字符拆分字符串。我还有以下代码行来调用函数:
int main(int argc, char*argv[])
{
string value = "OK,OK,OK,FAULT,OK"
vector<string> texts = splitString(value, ',');
//Do stuff with "texts" here
}
编辑这是我主要功能中的代码
我有相同的功能,并且在我编写的另一个C ++程序中调用该函数的方法相同,工作正常,所以我无法理解为什么它不能在这个中工作。
非常感谢任何帮助。谢谢
答案 0 :(得分:0)
可能不是最好的方法,但我通过改变我的功能来解决错误。
对于那些感兴趣的人,我现在有:
vector<string> split(std::string string, std::string del)
{
char* cstr = const_cast<char*>(string.c_str());
char* current;
std::vector<std::string> arr;
current = strtok(cstr, del.c_str());
while (current != NULL)
{
arr.push_back(current);
current = strtok(NULL, del.c_str());
}
return arr;
}
感谢所有提交建议的人
答案 1 :(得分:-2)
我相信这是因为你将字符串和字符都作为非const引用传递。尝试将main的内容更改为:
const string value = "OK,OK,OK,FAULT,OK";
const char comma = ',';
vector<string> texts = splitString(value, comma);