如何将char str [MAXCHAR]与字符串进行比较?

时间:2017-05-29 16:39:29

标签: c++ visual-c++ string-comparison

我希望比较两个序列是否相等而且我使用以下代码进行比较但是比较总是返回false。

=============================================== ==========================

 // testecompare.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <string>
#include <iostream>
#include <fstream>
#include <Windows.h>

using namespace std;

string getCurrentDirectoryOnWindows()
    {
        const unsigned long maxDir = 260;
        char currentDir[maxDir];
        GetCurrentDirectory(maxDir, currentDir);
        strcat(currentDir, "\\l0gs.txt");
        return string(currentDir);
    }

    string ReadFileContent() {

        string STRING;
        string aux;
        ifstream infile;
        infile.open(getCurrentDirectoryOnWindows());
        while (!infile.eof())
        {
            getline(infile, STRING);
            return STRING;
        }
        infile.close();

        return "";

    }


int _tmain(int argc, _TCHAR* argv[])
{
     char str[MAXCHAR] = "";
    sprintf(str, "0x0%X", "1D203E5");

    cout << str << endl;
    cout << "File content: " << ReadFileContent() << endl;

    // if i have the string "0x01D203E5" in my txt file 

    if (_stricmp(str,ReadFileContent().c_str()) == 0) { 

    cout << "Contents are equals!\n"; 

}

    system("pause");
    return 0;
}

如何正确地进行这种比较?

非常感谢。

1 个答案:

答案 0 :(得分:0)

比较不同类型实例的一个简单技巧是将它们转换为通用类型然后进行比较。

例如:

std::string content(ReadFileContent());
std::string from_array(str)
if (from_array == content)
{
}

编辑1:工作示例
代码有效。
这是一个工作计划:

#include <iostream>
#include <string>

int main()
{
    static const char text[] = "Hello";
    std::string         text_as_string(text);
    std::string         expected_str("Hello");
    if (text_as_string == expected_str)
    {
        std::cout << "Strings are equal: " << text_as_string << "\n";
    }
    else
    {
        std::cout << "Strings are not equal.\n";
    }
    return 0;
}

$ g++ -o main.exe main.cpp
$ ./main.exe
Strings are equal: Hello

请注意,上面的代码示例是比较整个整个字符串,而不是子字符串。如果您想搜索以获取更大字符串中的键字符串,则需要不同的函数。