Преобразование _TCHAR * в char *

Я пытаюсь получитьпростой образец OpenCV работа в C ++ на Windows и мой C ++ более чем ржавые.

Пример довольно просто:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
    if( argc != 2)
    {
        cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
        return -1;
    }
    Mat image;
    image = imread(argv[1], IMREAD_COLOR); // Read the file
    if(! image.data )                      // Check for invalid input
    {
        cout <<  "Could not open or find the image" << std::endl ;
        return -1;
    }
    namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
    imshow( "Display window", image );                // Show our image inside it.
    waitKey(0); // Wait for a keystroke in the window
    return 0;
}

Когда я делаю новое простое консольное приложение C ++ (с ATL) в Visual Studio 2012, я получаю другой шаблон дляmain:

int _tmain( int argc, _TCHAR* argv[] )

Поэтому, прежде чем я отправлю имя файла в OpenCVimread функция мне нужно преобразовать_TCHAR* arg[1] кchar*, Используя простое имя файла 'opencv-logo.jpg', из памяти в окне памяти я вижу, что _TCHAR занимает по два байта каждый

o.p.e.n.c.v.-.l.o.g.o...j.p.g...
6f 00 70 00 65 00 6e 00 63 00 76 00 2d 00 6c 00 6f 00 67 00 6f 00 2e 00 6a 00 70 00 67 00 00 00

Следуя рекомендации по конверсии вдругой ответ Я пытаюсь использоватьATL 7.0 Классы преобразования строк и макросы вставив следующий код:

char* filename = CT2A(argv[1]);

Но получающаяся память - беспорядок, конечно не 'opencv-logo.jpg' как строка ascii:

fe fe fe fe fe fe fe fe fe fe ...
þþþþþþþþþþ ...

Какой метод преобразования, функцию или макрос я должен использовать?

(НотабенеЭтот может быть связанный вопрос, но я не вижу, как подать заявкуответ Вот.)

Ответы на вопрос(3)

Ваш ответ на вопрос