处理向量中的指针对我来说是新的
我想比较每个字符是否是天气“,” ,但找不到它。
#include <sstream>
#include <vector>
#include <iostream>
#include<string>
using namespace std;
void parseInts(string str) {
vector<int> v;
string s;
for (int i=0;i<str.length();i++)
{
if(str[i]!=",")
cout<<str[i];
else
cout<<"\n";
}
}
int main() {
string str;
cin >> str;
parseInts(str);
return 0;
}
这是错误->
solution.cc:在函数“ void parseInts(std :: __ cxx11 :: string)”中:
solution.cc:12:18:错误:ISO C ++禁止比较指针之间
和整数[-fpermissive] if(str [i]!=“,”)
答案 0 :(得分:3)
您面临的问题是您无法将const char*
与char
进行比较。因此,要解决此问题,您应该将,
用单引号引起来,将其用char
而不是双引号引起来,因为这意味着const char*
是指向双引号中第一个字符的指针。请参阅下面的修复程序。
void parseInts(string str) {
vector<int> v; // What do you mean by this? It's unused. You can' remove it.
string s;
for (int i=0;i<str.length();i++)
{
if(str[i]!=',') // Should be single quotes and not double quotes
cout<<str[i];
else
cout<<"\n";
}
}
答案 1 :(得分:1)
编译器会给您一个非常详细的警告:
警告与字符串文字的比较会导致未指定的行为[ -Waddress ]
使用if(str[i]!=",")
标志进行编译时-Wall
在此情况下为字符串文字","
通过更改str[i]
(是char
)和逗号字符char comma = ','
之间的比较,编译后的代码将在执行后返回foo\nbar
,并带有测试输入{{1 }}
foo,bar