簡體   English   中英

為什么 push_back 函數不接受值/參數?

[英]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 不能隱式轉換為字符串,編譯器會感到困惑並認為這是不可能的。

有兩個簡單的選擇:

  1. 而不是使用 vector<string> 使用 vector<char> 這樣 push_back() 將附加字符。
    vector<char> vec;
    char ch = 'a';
    vec.push_back(ch);  // both these work
    vec.push_back('b'); // both these work
  1. 或者,將您的字符轉換為字符串,然后在您的字符串上調用 push_back。
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM