你如何在 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;
请注意,您实际上不应该有变量 s1
、s2
或 s3
,或者您只是将过程限制为三个输出。你应该有一个遍历字符串的循环,将结果推送到向量中。
【讨论】:
哇,我们的答案几乎相同...:S【参考方案2】:不。您必须将您的字符串放在一个适当的容器中,该容器将由您的函数返回;例如,您可以使用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,这不应该像看起来那么重。
【讨论】:
【参考方案3】:您可能希望返回类型vector<string>
。然后在您的函数中创建一个向量并将其作为值返回。
【讨论】:
只要“接受”你认为最清楚的答案,我们都会很高兴:)【参考方案4】:这根本不是一个有效的语法。如果您有 C++0x,则可以返回 std::make_tuple(s1, s2, s3)
,或者(更明智地)您可以只返回 std::vector<std::string>
。
【讨论】:
以上是关于你如何在 C++ 中拆分数组?的主要内容,如果未能解决你的问题,请参考以下文章