2017-03-21 186 views
0

我有一個疑問。我有一個包含一些數據的對象列表(在這種情況下用於存儲名稱)。C++迭代器列表

我遍歷列表:(pNames這是我的名單由參數接收)

std::string names; 
std::list<Names>::const_iterator it = pNames->begin(); 
while(it != pNames->end()) 
{ 
    std::cout << names << it->namesUser; 
    ++it; 
} 

問題:我需要保存的std :: string迭代器的所有值上使用MySQL查詢此字符串(例如,從('姓名')中的用戶選擇年齡;)在此stm :: cout < <名稱< < it-> namesUser;我可以看到列表中的所有名稱,但我不能在查詢中使用名稱變量。它只適用於cout。我是新的C++編程,那麼如何將所有迭代器值存儲在字符串中?

非常感謝。

問候

+1

添加'名+ =它 - > namesUser;'的循環? – NathanOliver

+2

@NathanOliver加上一個合適的分隔符,我假設。 – Angew

+0

嗨。我嘗試之前,但當我打印名稱變量測試它出現'? '符號而不是所有名稱由迭代器返回 – Pik93

回答

1

使用std :: ostringstream來代替std ::法院

http://www.cplusplus.com/reference/sstream/ostringstream/

#include <sstream> 

.... 

std::ostringstream names; 
std::string delimiter = ","; 
std::list<Names>::const_iterator it = pNames->begin(); 
if (it != pNames->cend()) 
{ 
    names << it->pNames; 
    it++; 
} 
while(it != pNames->cend()) 
{ 
    names << delimiter << it->namesUser; 
    ++it; 
} 
std::string result = names.str(); 
+0

非常感謝。它解決了我的問題。我已經使用stringstream,但不知道osstringstream。 問候;) – Pik93

+0

高興地幫助:) – Edd