Как обращаться с векторным указателем? - PullRequest
0 голосов
/ 30 декабря 2018

Обработка указателя в векторе для меня нова

Я хочу сравнить каждый символ с погодой "," или нет, но не могу его найти.

#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 голосов
/ 30 декабря 2018

Компилятор выдает довольно подробное предупреждение:

предупреждение сравнение со строковым литералом приводит к неопределенному поведению [ -Waddress ] if(str[i]!=",") при компиляции с-Wall flag

строковый литерал в этом случае ","

Изменяя сравнение между str[i] (который является char) и символом запятой char comma = ',' кодаскомпилировано и после выполнения вернуло foo\nbar с тестовым вводом foo,bar

...
char comma = ',';
for (unsigned int i = 0; i < str.length(); i++)
{
  // previously str[i] != ","; 
  if(str[i] != comma)      
    cout<<str[i];
  else
    cout<<"\n";
}
...
0 голосов
/ 30 декабря 2018

Проблема, с которой вы сталкиваетесь, заключается в том, что вы не можете сравнить 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";
}
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...