如何处理矢量指针

How to handle the vector pointer?

本文关键字:指针 处理 何处理      更新时间:2023-10-16

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

我想比较每个字符是天气",""或不,但找不到它。

#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)'中:

解决方案.cc:12:18:错误:ISO C++禁止指针之间的比较

和整数 [-允许] if(str[i]!=",")

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

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

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

在本例中为字符串文本","

通过更改str[i](这是一个char)和逗号字符之间的比较char comma = ','编译的代码,并在执行时返回带有测试输入foonbar 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";
}
...