C ++,指向整数比较错误的指针

时间:2014-02-13 23:18:42

标签: c++ pointers

这是我上一个问题的延续, In C++, how to read the contents of a text file, and put it in another text file?

在读取文件的内容并将其存储在向量中之后,我想将文件的内容与0之类的整数进行比较,

假设我的input.txt文件的内容是0100 .. 所以,在打开第二个文件后,这就是我给出的,

   string a = inputLines[0] ;
   cout << a[0] << '\n';
   if (a[0] == "0")
{
   cout << "Match" << '\n';
}

但是,我得到的错误是指向整数比较的指针,如何避免这个错误?

2 个答案:

答案 0 :(得分:4)

a[0]char,但"0"const char[2]。您想要使用字符文字'0'代替(不同的引号)。

if (a[0] == '0')

答案 1 :(得分:0)

a [0]具有类型char而“0”是字符串文字,它在内存中表示为两个字符的数组

['0']['\0']

并转换为指向表达式

中第一个元素的指针
a[0] == "0"

因此编译器会发出错误,因为操作数的类型不会出现问题。 您需要将字符与

的字符文字进行比较

if(a [0] =='0')

虽然你甚至可以写:)作为

if(a [0] ==“0”[0])

因为"0"[0]是一个角色。甚至以下方式

if(a [0] == *“0”)

但当然,使用简单的字符文字“0”要好得多。