【问题标题】:c++ checking strings for equality in for loopc ++在for循环中检查字符串是否相等
【发布时间】:2015-09-24 14:39:27
【问题描述】:

我对 c++ 很陌生,目前正在编写一个与这个问题无关的凯撒密码程序,但我不知道为什么我会收到此代码错误。

char alph[] = "ABCDEFGHIJKLMANOPQRSTUVWXYZ";
string key;
cout << "Enter your key: \n";
getline(cin, key);
int numKey;
for(int j = 0; j<= 26;j++ ){
    if (alph[j] == key){
        numKey = j;
    }
}

在我的主函数中还有更多不必要的内容,但我在 if(alph[j] == k) 语句中遇到错误:“错误:二进制表达式的无效操作数('int' 和 'string'( aka 'basic_string, allocator >'))" 如果有人能告诉我我做错了什么,将不胜感激。提前致谢。

【问题讨论】:

  • 字母表中的 26 个字符,由于&lt;=,程序中有 27 个循环。这不是致命的,因为终止零字节,但很可能不是你想要的。
  • 我知道这是一个没有实际应用的编程练习。但是看到人们假设 26 个字母的拉丁字母足以满足 任何事情 让我的皮肤爬行...... ;-)
  • 令我困惑的是,当您不知道问题出在哪里时,为什么您认为您可以决定什么是必要的?
  • @DevSolar:26 个字母的拉丁字母足以处理很多很多事情。
  • @DevSolar:不,阳光明媚,我所有的代码都在工作。谢谢你的慰问。你呢?

标签: c++ string for-loop equality


【解决方案1】:

除了循环溢出之外,您还试图比较一个字符和一个字符串,这是您的问题。 键应该只有一个字符吗?如果是这样,请将其设为 char,它会更好地工作。

【讨论】:

  • 您可能应该详细说明一下“循环溢出”。
  • 我尝试将其更改为字符,但我仍然遇到错误。你能告诉我在哪里以及如何改变它。
  • @MatthewHanson:展示如何正确操作有点困难,因为我们不知道您想要做什么。注意问题:key 应该只是一个字符吗?答案至关重要。您是如何尝试“将其更改为 char”的? key[0] 会是这样,检查 key.length() &gt; 0...
  • 是的,密钥应该是单个字符
  • 我刚刚想通了。感谢您的帮助
【解决方案2】:

您将string 与单个char 进行比较。

如果您只想读取单个字符,请声明 char c 并使用 cin &gt;&gt; c 读取它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-06
    • 2023-03-14
    • 2017-08-27
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 2013-01-25
    • 2019-10-10
    相关资源
    最近更新 更多