Это фрагмент программы, который был скомпилирован с использованием visual studio 6. Однако после компиляции в visual studio 2013. я получаю сообщение об ошибке в следующей строке. Я вставляю ошибку ниже.Преобразование tstring в строку в C++
Это объявлена в заголовочном файле
public:
Serial(tstring &commPortName, int bitRate = 115200, char *Name = NULL);
Это в исходном файле
string COMport;
cout << "Enter the COM port (eg. COM1): ";
cin >> COMport;
tstring commPortName(COMport); //**ERROR AT HERE**
Serial serialDEVICE(commPortName, 115200, "DEVICE");
я получаю следующие ошибки
Error 1 error C2664:
'std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>::
basic_string(std::initializer_list<_Elem>,const std::allocator<wchar_t> &)'
: cannot convert argument 1 from 'std::string' to 'const
Вторая ошибка:
IntelliSense: no instance of constructor "std::basic_string<_Elem, _Traits,
_Alloc>::basic_string [with _Elem=wchar_t,
_Traits=std::char_traits<wchar_t>, _Alloc=std::allocator<wchar_t>]" matches
the argument list argument types are: (std::string)
Должен ли я сделать некоторое преобразование из tstring в строку, чтобы удалить эту ошибку?
Нет, вы правы, tstring является частью непрерывной тренировки лабиринта функций обработки строк и макросов, чтобы попытаться отменить ущерб, который вызвал Microsoft, не следуя стандартам программирования на С ++, по-видимому, потому, что они хотели для «блокировки» кода для компиляции только в составе компиляторов Microsoft. – Owl