[英]Why doesn't the push_back function accept the value/parameter?
我正在嘗試將字符串的某些特定字符存儲在向量中。 當我想推回字符時,值有問題,我不知道為什么。 不幸的是,翻閱 cpp 參考頁面對我沒有幫助。 有人可以幫忙嗎? 這是代碼:
int main()
{
std::string str1 = "xxxGGxx$xxxGxTxGx";
std::vector<std::string> vec;
std::vector<std::string>::iterator it;
for(auto &ch:str1)
{
if(ch == 'G' || ch == '$' || ch == 'T')
{
vec.push_back(ch); //Problem: ch not accepted
}
}
for(it = vec.begin(); it!=vec.end(); it++)
{
std::cout << *it;
}
}
Vector 需要是char
類型,而不是string
類型。
原因 vec.push_back(ch); 不起作用是因為 vec 是字符串向量而不是字符向量。 push_back() 只接受存儲在向量中的類型,在這種情況下是字符串。 vector<int> 不能 push_back 字符串,因為字符串不能隱式轉換為 int。 它必須以某種方式首先轉換為 int 然后推回。 由於 char 不能隱式轉換為字符串,編譯器會感到困惑並認為這是不可能的。
有兩個簡單的選擇:
vector<char> vec;
char ch = 'a';
vec.push_back(ch); // both these work
vec.push_back('b'); // both these work
string str(1, ch); // Creates a string containing 1 character equal to ch
vec.push_back(str); // Push back our string
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.