如何处理向量指针?

Posted

技术标签:

【中文标题】如何处理向量指针?【英文标题】:How to handle the vector pointer? 【发布时间】:2018-12-30 06:16:33 【问题描述】:

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

我想比较每个字符的天气","与否但找不到。

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

【问题讨论】:

我在这里看不到向量中的任何指针。实际的问题似乎是if(str[i]!=","):Comparing a const char * with character. 【参考方案1】:

您面临的问题是您无法将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";

 

【讨论】:

【参考方案2】:

编译器会给你一个非常详细的警告:

警告 与字符串文字比较会导致未指定的行为 [-Waddress] if(str[i]!=",") 编译时使用 -Wall 标志

本例中的字符串字面量","

通过更改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";

...

【讨论】:

以上是关于如何处理向量指针?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理向量属性的向量? [复制]

NEON 如何处理溢出?

硬件是如何发现与响应中断事件的?操作系统是如何处理中断的

实际stl中默认赋值运算符是如何实现的

如何处理卡尔曼滤波器中的异步数据

如何处理 C++ 17 中变体中包含的类型的无意义方法