如何将双引号字符串与字符进行比较?
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 >> input;
将在它找到的第一个空格处停止。
另外,你实际上想做什么?
你试过isspace()函数吗?
"将输入变量中的任何内容与 char 类型进行比较将导致错误相等" 这没有任何意义。字符串是字符的集合。
您的代码永远不会检测到空格,因为您编写它时永远无法输入空格。您可能需要getline
函数。 >>
默认不会读取空格。
【参考方案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];
它会起作用的。
【讨论】:
正如我在问题中所说,字符串和字符不能相互相等,无论它们内部是否具有相同的东西以上是关于如何将双引号字符串与字符进行比较?的主要内容,如果未能解决你的问题,请参考以下文章