Я пытаюсь выяснить, совпадают ли две строки, которые у меня есть, для модульного тестирования. Первая - это предопределенная строка, жестко запрограммированная в программе. Второй - чтение из текстового файла с помощью ifstream с использованием std :: getline (), а затем взятие в качестве подстроки. Оба значения хранятся в виде строк C ++.
Когда я выводю обе строки на консоль, используя cout для тестирования, они кажутся идентичными:
ThisIsATestStringOutputtedToAFile
ThisIsATestStringOutputtedToAFile
Однако string.compare возвращает сообщение о том, что они не равны. При выводе в текстовый файл две строки выглядят следующим образом:
ThisIsATestStringOutputtedToAFile
Т ^ @ ч ^ @ я ^ @ S ^ @ I ^ @ S ^ @ А ^ @ Т ^ @ Ек @ S ^ @ т ^ @ S ^ @ т ^ @ г ^ @ я ^ @ п ^ @ г ^ @ O ^ @ и ^ @ т @ ^ р ^ @ и ^ @ т @ ^
т ^ @ е ^ @ д ^ @ т @ ^ о ^ @ А ^ @ Р ^ @ я ^ @ ^ @ л е
Я предполагаю, что это какая-то проблема кодирования, и если бы я был на своем родном языке (старый добрый C #), у меня не было бы слишком много проблем. Так как я с C / C ++ и Vi, и, честно говоря, не знаю, куда идти дальше! Я пытался посмотреть, возможно, преобразование в / из ANSI / Unicode, а также удаление нечетных символов, но я даже не уверен, существуют ли они на самом деле или нет ..
Заранее спасибо за любые предложения.
EDIT
Извиняюсь, это мой первый пост здесь. Код ниже, как я прохожу процесс:
ifstream myInput;
ofstream myOutput;
myInput.open(fileLocation.c_str());
myOutput.open("test.txt");
TEST_ASSERT(myInput.is_open() == 1);
string compare1 = "ThisIsATestStringOutputtedToAFile";
string fileBuffer;
std::getline(myInput, fileBuffer);
string compare2 = fileBuffer.substr(400,100);
cout << compare1 + "\n";
cout << compare2 + "\n";
myOutput << compare1 + "\n";
myOutput << compare2 + "\n";
cin.get();
myInput.close();
myOutput.close();
TEST_ASSERT(compare1.compare(compare2) == 0);