如何处理向量指针?

时间:2018-12-30 06:16:34

标签: c++ pointers vector

处理向量中的指针对我来说是新的

我想比较每个字符是否是天气“,” ,但找不到它。

#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]!=“,”)

2 个答案:

答案 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