我试图做一个简单的字符串拆分功能,但我有一个问题,返回拆分字符串。
我把字符串变成字符串s1,s2,s3。我该如何归还{s1,s2,s3}
?我使用括号,但编译器告诉我
expected primary-expression before '{' token
expected `;' before '{' token
expected `;' before '}' token
尽管似乎没有任何问题。即使允许{s1,s2,s3}
也在做什么?
答案 0 :(得分:3)
您应填充std::vector
并返回该内容。
std::vector<std::string> tokenize(/*...*/)
{
std::vector<std::string> result;
// ...
result.push_back(s); // s: s1 - s3
// ...
return result;
}
请注意,您实际上不应该拥有变量s1
,s2
或s3
,或者您只是将流程限制为三个输出。你应该在字符串中循环,将结果推送到向量中。
答案 1 :(得分:1)
不。你必须将你的字符串放在一个适合你的函数返回的容器中;例如,您可以使用std::vector<std::string>
:
std::vector<std::string> YourFunction(/* ... */)
{
std::vector<std::string> ret;
// ...
ret.push_back(s); // you should call this for each string
// ...
return ret;
}
感谢RVO这不应该像看起来那样重量级。
答案 2 :(得分:0)
根本不是一个有效的语法。如果你有C ++ 0x,你可以返回std::make_tuple(s1, s2, s3)
,或者(更明智地)你可以返回std::vector<std::string>
。
答案 3 :(得分:0)
您可能希望返回类型vector<string>
。然后在你的函数中创建一个向量并将其作为值返回。