Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么这两个字符数组不相等?_C++_String_File - Fatal编程技术网

C++ 为什么这两个字符数组不相等?

C++ 为什么这两个字符数组不相等?,c++,string,file,C++,String,File,我有两个字符数组,它们在console DESKTOP-KDOD9T上输出相同的值,一个从文件读取,另一个通过winsock gethostname接收。相比之下,它们并不相同。上面说你不能访问这个程序 #include "pch.h" #define _WINSOCK_DEPRECATED_NO_WARNINGS #include <iostream> #include <string> #include <fstream> #include <Wi

我有两个字符数组,它们在console DESKTOP-KDOD9T上输出相同的值,一个从文件读取,另一个通过winsock gethostname接收。相比之下,它们并不相同。上面说你不能访问这个程序

#include "pch.h"
#define _WINSOCK_DEPRECATED_NO_WARNINGS

#include <iostream>
#include <string>
#include <fstream>
#include <WinSock2.h>
#pragma comment( lib, "Ws2_32.lib" )

int main()
{
    char word[255];
    std::fstream stream;
    stream.open("Text.txt");
    stream >> word;
    std::cout << word << "\n";

    WSADATA wsa_Data;
    WSAStartup(0x101, &wsa_Data);

    char buffer[255];
    gethostname(buffer, 255);
    std::cout << buffer << std::endl;

    WSACleanup();

    if (word == buffer)
    {
        std::cout << "Welcome!\n";

        for (int i = 0; i < 3; ++i)
        {
            std::cout << ".";
                Sleep(300);
        }
        std::cout << std::endl;
    }
    else
    {
        std::cout << "You can't access this program from that PC!\n";
        Sleep(200);
        exit(1);
    }

    getchar();

    return 0;
}

数组没有可以比较的值。它们包含多个值

当你比较两个数组时,数组会衰减为指针,你会比较指针看它们是否指向同一个对象。当然,他们没有


如果要比较每个字节,可以使用memcmp之类的函数。如果你想比较两个字符串,你可以使用一个类似于StrcMP.< /P>的函数,使用StrcMP来比较字符串,而不是指针相等。或者使用STD::String代替CHAR[]数组。在使用C++时,你应该使用STD::String而不是原始字符数组。更清楚的是,它们不指向同一个地方,存储的地址不同。