gpt4 book ai didi

c++ - C++中tstring到string的转换

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:52 26 4
gpt4 key购买 nike

这是使用 visual studio 6 编译的程序片段。但是,在 visual studio 2013 中编译后,我在以下行收到错误。我在下面粘贴了错误声明。

这是在头文件中声明的

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 到 string 的转换才能消除这个错误吗?

最佳答案

tstring 不是标准的 C++ 类型,但我假设您项目中的某处类似于:

#ifdef UNICODE
#define tstring std::wstring
#else
#define tstring std::string
#endif

在最近 Visual Studio 默认的 Unicode 构建中,tstring 被定义为 wstring,这意味着它需要一个宽字符串来初始化它。由于 COMPort 被定义为 ANSI 字符串 (std::string) 而不是 tstring,因此构建失败,因为这两种类型不是可直接转换。

您可能应该将您的项目改回 ANSI(多字节)构建(至少在短期内),因为如果没有彻底的代码审查,您无疑会遇到其他兼容性问题。您可以使用“项目属性”对话框的“常规”部分中的字符集选项来做到这一点。

关于c++ - C++中tstring到string的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28790930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com