如何处理向量指针?
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";
...
【讨论】:
以上是关于如何处理向量指针?的主要内容,如果未能解决你的问题,请参考以下文章