2017-05-29 8 views
0

私は両方のシーケンスが対等であり、私は常にfalseを返し、次のコードが、comparationを使用している場合を比較します。文字列とchar str [MAXCHAR]を比較するにはどうすればよいですか?

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

// 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

オフトピックは:(!infile.eof()) ''しばらくバグです。もっとここで読む:[なぜあるのiostream :: eofの間違った考えられてループ条件の内側?](https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong) – user4581301

+0

[mcve]でハッキングを試みて複製できません。あなたのMCVEはどのように見えますか? – user4581301

+0

@ user4581301、質問が編集されました。 –

答えて

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 

は、上記のコードサンプルは全体または全体文字列ではなく、ストリングを比較している、覚えておいてください。あなたが長い文字列内のキー列のための検索にしたい場合は、それはさまざまな機能を必要とします。

+0

@トーマス、これは動作しません。 –

+0

@ Cloud.NET:私の編集を参照してください。 –

関連する問題