返回字符串函数

时间:2012-03-14 12:22:02

标签: c++ string vector return

如果某些return出现不止一次,我就无法strings

即我有两个vectors,我使用1st vector搜索2nd vector,如果elements中有一些2nd vector 1st vector我想return出现return错误,1st vector出现return s1多次,但出于某种原因,如果break中的元素不属于std::vector<std::string> test; //vector that comes in test.push_back("YES"); test.push_back("YES"); //test.push_back("NO"); test.push_back("NO"); std::vector<std::string> test1; // vector from DB.. test1.push_back("YES"); test1.push_back("NO"); std::string s ("Element count is fine"); std::string s1 ("Element count is incorrect"); for(int i = 0; i < test1.size(); i++) { if(count(test.begin(), test.end(),test1[i]) > 1) { return s1; } } return s; 我只能{{1}}出现不止一次

我的代码在

之下

我想{{1}}当元素出现不止一次时,我怎么能这样做我尝试在{{1}}面前但是没有效果

{{1}}

2 个答案:

答案 0 :(得分:2)

将循环更改为:

    for(int i = 0; i < test1.size(); i++)
    {
        if(count(test.begin(), test.end(),test1[i]) > 1)
        {
        //  DCS_LOG_DEBUG("Some elements have appeared more than once...");
            return s1;
        }
    }

return突破所有控制结构并离开当前函数。您的旧代码几乎每次都会返回s1,因为return s1没有为if提供保护。

答案 1 :(得分:0)

我认为代码是对的。它在我的电脑上工作正常。也许你可以在if中输出一些内容,看看究竟发生了什么。

    if(count(test.begin(), test.end(),test1[i]) > 1)
    {
        cout<<"The count is "<<count(test.begin(), test.end(),test1[i])<<endl;
        return s1;
    }