如何将双引号字符串与字符进行比较?

Posted

技术标签:

【中文标题】如何将双引号字符串与字符进行比较?【英文标题】:How do I compare a double quotes string to a character? 【发布时间】:2020-08-06 05:04:35 【问题描述】:

我曾尝试在 C++ 中将字符串下标与带有空格 (" ") 的字符串进行比较,但它返回了指针比较错误。现在,当我尝试将 "" 与 ' ' 进行比较时,显然它并不相等。当字符串的某个下标等于空格字符时,下面的代码应该继续for循环。

如果我将子字符串与“”进行比较,我会收到以下错误: 16:22: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]

请注意,当我在输入变量中输入一个空格时,它需要比较它。

// Example program
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
int main()

    string input;
    vector<int> letters (26,0);
    vector<char> alpha = 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z';
    bool flag;
    cin >> input;
    for(int i = 0; i < input.size();i++)
        if(input[i]==' ')
            continue;
        
        cout << i;
        
        for(int j = 0; j < alpha.size(); j++)
            if(input[i]==alpha[j])
                letters[j] ++;
            
        
    
     
    for (int i = 0; i < letters.size();i++)
        if(letters[i] > 0)
            cout << alpha[i] << ": " << letters[i] << endl;
        
    
   
   

有没有办法比较空格字符和字符串?

【问题讨论】:

您能指出哪里出错了吗?您的代码对我来说似乎很好:ideone.com/X6aYxt 值得注意的是,虽然它现在是编写的,但您的输入中永远不会有空格,因为cin &gt;&gt; input; 将在它找到的第一个空格处停止。 另外,你实际上想做什么? 你试过isspace()函数吗? "将输入变量中的任何内容与 char 类型进行比较将导致错误相等" 这没有任何意义。字符串是字符的集合。 您的代码永远不会检测到空格,因为您编写它时永远无法输入空格。您可能需要getline 函数。 &gt;&gt; 默认不会读取空格。 【参考方案1】:

据我所知,没有办法让's' == "s" 工作。但是你可以通过定义operator== 使's' == string("s") 工作:

// for 's'==string("s")
bool operator==(const char c, const string &s)  return c == s[0];  
// for string("s") == 's'
bool operator==(const string &s, const char c)  return c == s[0];  

它会起作用的。

【讨论】:

正如我在问题中所说,字符串和字符不能相互相等,无论它们内部是否具有相同的东西

以上是关于如何将双引号字符串与字符进行比较?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 如何将单引号字符串与双引号字符串连接起来。

Python MySQLdb 将双引号改为单引号

Excel vba替换双引号怎么写?

Python字符串

PHP 字符串

如何将双引号中的路径传递给sql文件