你如何在c ++中拆分数组?

时间:2010-11-08 22:50:19

标签: c++ arrays string return-value

我试图做一个简单的字符串拆分功能,但我有一个问题,返回拆分字符串。

我把字符串变成字符串s1,s2,s3。我该如何归还{s1,s2,s3}?我使用括号,但编译器告诉我

expected primary-expression before '{' token 
expected `;' before '{' token 
expected `;' before '}' token 

尽管似乎没有任何问题。即使允许{s1,s2,s3}也在做什么?

4 个答案:

答案 0 :(得分:3)

您应填充std::vector并返回该内容。

std::vector<std::string> tokenize(/*...*/)
{
    std::vector<std::string> result;

    // ...
    result.push_back(s); // s: s1 - s3
    // ...

    return result;
}

请注意,您实际上不应该拥有变量s1s2s3,或者您只是将流程限制为三个输出。你应该在字符串中循环,将结果推送到向量中。

答案 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>。然后在你的函数中创建一个向量并将其作为值返回。