C++ 如何将字符数组中的值与另一个字符进行比较

C++ 如何将字符数组中的值与另一个字符进行比较,c++,c,arrays,C++,C,Arrays,我编写了一个程序,将txt文件的每一行复制到一个数组的索引中,然后将txt文件的这一行放入另一个数组中,该数组按字符分隔这一行。我试图将字符数组中的第一个索引与“H”进行比较,但我无法进行比较。如何将数组中的字符与另一个字符(如“H”)进行比较 #包括 #包括 #包括 int main(int argc,char*argv[]){ char const*const fileName=argv[1]; FILE*FILE=fopen(文件名,“r”); int i=0; 字符行[256]; cha

我编写了一个程序,将txt文件的每一行复制到一个数组的索引中,然后将txt文件的这一行放入另一个数组中,该数组按字符分隔这一行。我试图将字符数组中的第一个索引与“H”进行比较,但我无法进行比较。如何将数组中的字符与另一个字符(如“H”)进行比较

#包括
#包括
#包括
int main(int argc,char*argv[]){
char const*const fileName=argv[1];
FILE*FILE=fopen(文件名,“r”);
int i=0;
字符行[256];
char*str[256];
while(fgets(行、sizeof(行)、文件)){
str[i]=strdup(行);
strcpy(str[i],行);
i++;
}
char-tmp[256];
memcpy(tmp,str[0],strlen(str[0])+1);
if(strcmp(tmp[0],“H”)==0){
printf(“%s”,“是h”);
}否则{
printf(“%s”,“非h”);
}
fclose(文件);
返回0;
}

> p>你不清楚你在做什么,也许你更容易使用C++文件/数组/字符串原语。 在c++中有一个等价物:

#include <fstream>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main(int argc, char* argv[])
{
    ifstream fl(argv[1]); // create file stream
    string s;
    vector<string> lines;
    while (getline(fl, s)) // while getline from input file stream succeeds
        lines.push_back(s); // add each read line to vector of strings
    string tmp = lines[0]; // first line
    if (tmp[0] == 'H') // compare first character of string `tmp`
        cout << "is h" << endl;
    else
        cout << "not h" << endl;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
ifstream fl(argv[1]);//创建文件流
字符串s;
矢量线;
while(getline(fl,s))//while来自输入文件流的getline成功
lines.push_back(s);//将每个读取行添加到字符串向量
字符串tmp=行[0];//第一行
if(tmp[0]=='H')//比较字符串'tmp'的第一个字符`

cout您应该将数组[index]与字符进行比较。注意:字符用单引号表示。双引号用于字符串

比如说,

if(array[index] == 'H')
    code goes here...

我还没有试过你的代码,但是
tmp
被正确地初始化为一个正确的值,你可以说
tmp[0]=='H'
'H'
被翻译成字符“H”的文本ASCII值,所以只需将该值与
tmp[0]的ASCII值进行比较即可
应该足够了。谢谢,这实际上解决了我无法比较它们的问题。谢谢你如此详尽的回答,并深入探讨了为什么它会给我那个特定错误。将其更改为if(tmp[0]='H')确实解决了我的问题。
if(array[index] == 'H')
    code goes here...