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

Posted

技术标签:

【中文标题】你如何在 C++ 中拆分数组?【英文标题】:how do you split an array in c++? 【发布时间】:2010-11-08 22:50:19 【问题描述】:

我正在尝试做一个简单的字符串拆分功能,但在返回拆分字符串时遇到问题。

我将字符串转换为字符串 s1、s2、s3。我如何返回s1,s2,s3?我使用括号,但编译器告诉我

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

即使看起来没有任何问题。甚至允许s1,s2,s3 做吗?

【问题讨论】:

请在您的帖子中包含一个代码 sn-p。您如何尝试拆分字符串?标准库中可能已经有一个函数可以满足您的需要(提示:strtok)。 不,retun s1,s2,s3; 不是有效的 C++。 好的。谢谢。我必须说,c++ 有点烦人 那些不会杀死你的东西会让你成为一个更好的程序员 【参考方案1】:

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

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

    std::vector<std::string> result;

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

    return result;

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

【讨论】:

哇,我们的答案几乎相同...:S【参考方案2】:

不。您必须将您的字符串放在一个适当的容器中,该容器将由您的函数返回;例如,您可以使用std::vector&lt;std::string&gt;:

std::vector<std::string> YourFunction(/* ... */)

    std::vector<std::string> ret;
    // ...
    ret.push_back(s); // you should call this for each string
    // ...
    return ret;

感谢RVO,这不应该像看起来那么重。

【讨论】:

【参考方案3】:

您可能希望返回类型vector&lt;string&gt;。然后在您的函数中创建一个向量并将其作为值返回。

【讨论】:

只要“接受”你认为最清楚的答案,我们都会很高兴:)【参考方案4】:

这根本不是一个有效的语法。如果您有 C++0x,则可以返回 std::make_tuple(s1, s2, s3),或者(更明智地)您可以只返回 std::vector&lt;std::string&gt;

【讨论】:

以上是关于你如何在 C++ 中拆分数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中将数字字符串拆分为数组? [复制]

如何在for循环Python中拆分数组

我们如何在 C++ 中使用窗口拆分器

如何通过分隔符将字符串拆分为数组?

java如何从一串字符串中拆分出姓名地址和电话号码

如何在 C++ 中拆分字符串而不将其他库安装到标准 Ubuntu 版本? [复制]