簡體   English   中英

查找並比較兩個字符串中的字符

[英]find and compare characters in two strings

// if (var1.substr (0, 2) == alphaLetter[i]) 

if是不合法的。 是否有可能以某種方式檢查var1中的前三個字符在alphaLetter

int main ()
{
    std::string const alphaLetter = "ABCDEFGHIJKLMNOPRSTVUYWQZX";

    std::string var1= "";
    std::cout << " Enter 6 characters: ";
    std::cin >> var1;
    for (int i = 0; i < alphaLetter.size (); i++)
    {
        for (int n = 0; n < alphaLetter.size(); n++)
        {
            if (var1.substr (0, 2) == alphaLetter[i])
            {
                std::cout << "True";
            }
        }
    }
}
if (var1.substr(0, 3).find_first_not_of(alphaLetter) == std::string::npos) {
  // The first three characters are all present in alphaLetter
}
if (var1.substr (0, 2) == alphaLetter[i])

這是非法的,因為您嘗試比較std::string (長度為2)和char

您可以使用find_first_not_of方法( docs ):

auto pos = var1.find_first_not_of(alphaLetter);
if (pos == std::string::npos ||  // means there's no letters not in alphaLetter
    pos >= 3)
{
    ...
}

另一方面,如果您需要確定char是否在A..Z范圍內, A..Z可以檢查其代碼是否在ord(A)..ord(Z)

auto firstThreeLetters = var1.substr(0, 3);
if (std::all_of(firstThreeLetters.begin(), firstThreeLetters.end(),
    [](char c) {
        return c >= 'A' && c <= 'Z';
    })
{
    ...
}

這樣更快,因為在最壞的情況下, find_first_not_of會針對每個字符串字母迭代alphaLetter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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