比较C++中的两个字符串

问题描述:

我想比较用户输入与存储在字符串数组中的值。我的阵列是比较C++中的两个字符串

string colours[] = {"Black","Blue","Green","Orange","Red","Yellow"}; 

用户输入被分配到

CString selectedColor; 

我怎么能比较这些值?

+0

w ^你想知道的帽子? 'colors []'数组中包含'selectedColor'吗?或者_compare_是什么意思? – outofmind

+3

为什么你不坚持单个字符串类?然后,您可以使用关系运算符来执行您想要的任何操作。 –

+0

selectedColur是为用户输入提供的变量名称。我想检查它是否在颜色数组中。 – KMA

我会怎么做:

#include <iostream> 

int main(void) 
{ 
    std::string colours[] = {"Black","Blue","Green","Orange","Red","Yellow"}; 
    std::string input; 
    std::cin >> input; 
    for(const auto& color : colours) //c++11 loop, you can use a regular loop too 
    { 
     if(input == color) 
     { 
      std::cout << input << " is a color!" << std::endl; 
     } 
    } 
} 

你也可以转换CStringstd::string,并比较它们或周围的其他方法转换std::stringCString和比较,但是这已经被问和已经回答:How to convert CString and ::std::string ::std::wstring to each other?

+0

我从组合框中获取此用户输入(下拉列表)。我可以将CString中的combobox输入类型转换为字符串吗? – KMA

+1

@AlokaKulathilaka是的,你可以,只要按照链接或更好的方式,而不是将'colours'数组声明为'CString'数组,并且完全避免转换。免责声明:我没有经验与VC + +(这是我假设你正在使用) –

另一种可能的解决方案,已经与所有的转换:

std::string colours[] = { "Black", "Blue", "Green", "Orange", "Red", "Yellow" }; 
CString selectedColor("Blue"); 

int colours_size = sizeof(colours)/sizeof(colours[0]); 
for (int i = 0; i < colours_size; ++i) { 
    CString comparedColor(colours[i].c_str()); 
    if (selectedColor.Compare(comparedColor) == 0) { 
     std::cout << "Color found" << std::endl; 
    } 
}