2013-02-23 157 views
0

我試圖通過一組字符串有點困難。用於向量和數組的方法在這裏不起作用;我嘗試了很多遍歷集合的方式,包括調用迭代器,但編譯器不會購買它。我在網上查找,但沒有答案似乎很正確。通過一組搜索

Domain.h

#ifndef DOMAIN_H_ 
#define DOMAIN_H_ 
#include <sstream> 
#include <string> 
#include <set> 

using namespace std; 

class Domain { 
public: 
Domain(); 
virtual ~Domain(); 
void add(string added_domain); 

    string toString(); 

private: 
    set<string> the_domain; 
    }; 

#endif /* DOMAIN_H_ */ 

Domain.cpp 
    include "Domain.h" 
    include <string> 
    include <set> 

Domain::Domain() { 
    // TODO Auto-generated constructor stub 

} 

Domain::~Domain() { 
    // TODO Auto-generated destructor stub 
} 

void Domain::add(string added_domain) 
{ 
    the_domain.insert(added_domain); 
} 

string Domain::toString() 
{ 
    // insert here 
} 

希望我不會需要再次問這個。謝謝您的幫助!

+3

當然,你可以使用迭代器遍歷一個集合。你如何顯示你嘗試的迭代器代碼和錯誤消息而不是一堆空的存根? – us2012 2013-02-23 03:08:56

+0

'find'有什麼問題? – Beta 2013-02-23 03:09:31

+1

*「希望我不會再問這個問題了。」*問*再次問什麼? – WhozCraig 2013-02-23 03:24:35

回答

2
bool Domain::searchForString(const string &str) 
{ 
    return(the_domain.find(str) != the_domain.end()); 
} 
1

可以使用迭代器:

std::set<std::string> strs; 
for(std::set<std::string>::const_iterator it = strs.begin(); it != strs.end; ++i) { 
    std::cout << *it << std::endl; 
} 

您可以使用提升的foreach:

std::set<std::string> strs; 
BOOST_FOREACH(const std::string &str, strs) { 
    std::cout << str << std::endl; 
} 

您可以使用std ::的foreach

struct out { void operator()(const std::string &str) { std::cout << str << std::endl; } 
std::set<std::string> strs; 
std::foreach(strs.begin(), strs.end(), out()); 

,你可以使用C++ 11範圍循環:

std::set<std::string> strs; 
for(const auto &str: strs) { 
    std::cout << str << std::endl; 
} 

您可以使用其他std容器,而不僅僅是它們使用相同的代碼而不是std :: set。

1
#include <sstream> 

string Domain::toString() const { 
    std::ostringstream ss; 

    for (const auto& s : strs) { 
     ss << s << std::endl; 
    } 

    return ss.str(); 
} 
+0

'string toString()'可能不應該與寫入屏幕有關...... – 2013-02-23 03:47:34

+0

@MooingDuck看起來合乎邏輯,改變了一下。 – Snps 2013-02-23 03:59:12