将输入数组与字符串进行比较

Posted

技术标签:

【中文标题】将输入数组与字符串进行比较【英文标题】:Compare an input array with string 【发布时间】:2015-10-05 08:09:43 【问题描述】:

如何使用正确的代码来比较输入数组和字符串?

#include<iostream>
#include<cstring>
#include<stdlib.h>

using namespace std;

int main()

  char user[30] ;
  string nama[5]="ali33,abu123,ahmad456,kasim123,rahmat123";
  int w,i ;

  cout<<"username : ";
  cin>>user[30];

  for(i=0;i>=0;++i)
  
    w=strcmp(nama[i],user);
  

我使用的是Dev-C++,错误就在这一行:

w=strcmp(nama[i],user)

有谁知道如何解决这个问题?

【问题讨论】:

您是否要创建五个字符串?你认为cin&gt;&gt;user[30]; 做了什么?而您的 for 循环毫无意义。基本上,你的大部分代码没有意义,而且没有 cmets,我们无法知道它应该做什么。 这是一个真实的代码和一个真实的错误位置吗?什么是错误? 【参考方案1】:

我建议你研究这个:

std::vector<string> nama =  "ali33", "abu123", "ahmad456",
                             "kasim123", "rahmat123" ;
string user;
cout << "username : ";
int w = -1;
if (cin >> user)

    for(int i = 0; i < nama.size(); ++i)
        if (nama[i] == user)
             w = i;
    if (w != -1)
        std::cout << user << " found at [" << w << "]\n";
    else
        std::cout << user " not found\n";

注意:在您了解差异之前,请使用 std::vector 而不是数组,而对于任何文本,请使用 std::string。您可以使用 C++ 标准库函数 std::find() 来查看 user 值是否出现在 nama 中,但是学习如何编写循环并自己动手也是很好的。

【讨论】:

【参考方案2】:
`strcmp()`**is used when comparing c-string data types. Convert your char data type to string and use compare function as illustrated below**`

int main()

    char user[30];
    string nama[5] =  "ali33","abu123","ahmad456","kasim123","rahmat123" ;
    int w = -99;
    int i;

    cout << "username : ";
    cin >> user[30];

    string temp(user);

    for (i = 0; i < 5;  i++)
    
        w = nama[i].compare(temp);
    

【讨论】:

以上是关于将输入数组与字符串进行比较的主要内容,如果未能解决你的问题,请参考以下文章

将字符串数组与变量Java进行比较[重复]

将数组值与字符串进行比较

如何拆分字符串数组,然后将该拆分数组的每个第一个索引与字符进行比较?

array_uintersect 将多维数组的每一行中的特定元素与字符串的平面数组进行比较

将字符串与字符序列进行比较

将字符串与字符串进行比较(DatagramPacket 中的字节数组)