C++ strcmp比较错误

C++ strcmp比较错误,c++,strcmp,C++,Strcmp,所以我运行这段代码来打开一个文件,并将本地字符与文件中存储的值进行比较,但出于某种奇怪的原因,strcmp告诉我“15”等于“17”。。有什么想法吗?这很奇怪,因为问题只发生在第17行。。以下是相关代码: ... string line; size_t found; size_t nextFound; char ID[11]; char storage_ID[11] = "15"; //Open the file ifstream file(FILE); if (file.is_open(

所以我运行这段代码来打开一个文件,并将本地字符与文件中存储的值进行比较,但出于某种奇怪的原因,strcmp告诉我“15”等于“17”。。有什么想法吗?这很奇怪,因为问题只发生在第17行。。以下是相关代码:

...
string line;
size_t found;
size_t nextFound;
char ID[11]; 
char storage_ID[11] = "15";


//Open the file
ifstream file(FILE);
if (file.is_open()) 
{
     for (int count = 0; count < 25; count++) 
     {
         getline(file,line);  
         if (file.eof()) 
         {
             return;
         }
         //store object ID
         found = line.find(":");
         strcpy(ID[count],line.substr(0,found).c_str()); //stores ID from the start of a line until a ":" is found
         if(strcmp(storage_ID,ID[count])==0) 
         {
            foundID = true;
         }

         else
         {
             foundID = false;
         }

谢谢你的帮助

代码中有错误,您正在声明
charid[11]一个11个字符的数组,在循环中,count从0到25分配给ID[count](当count为12时,您从文件中读取12个ID,您将写入无效的内存ID[12-?])

代码应为:

char ID[11];
...
strcpy(ID,line.substr(0,found).c_str()); //stores ID from the start of a line until a ":" is found

假设代码中没有大小大于11的ID,将字符串与单个字符进行比较。与上面行中的
strcpy
调用相同。您还可以将
strcpy
转换为
char
。是不是代码是字符串数组?为什么在C++程序中使用C样式字符串,在这里你已经使用C++的代码> STD::String 类,用于一些变量?@ JoaHixIbRiBrg:这不仅仅是未定义的行为。code>strcmp
需要两个
char*
参数;正在传递的第二个参数,
ID[count]
的类型为
char
。这甚至不应该编译——任何符合条件的编译器都必须至少对此发出警告。您“忘记提到”了
ID
是2D数组吗?您发布的代码具有
charid[11]。始终复制并粘贴您实际编译的代码:谢谢@NetVipeC-我输入了有关ID数组的错误信息,但您抓住了要点。谢谢
char ID[11];
...
strcpy(ID,line.substr(0,found).c_str()); //stores ID from the start of a line until a ":" is found