CString to std::string or sql::SQLString conversion - C++
CString to std::string or sql::SQLString conversion - C++
我正在尝试将来自CComboBox
的CString变量转换为std::string
或sql::SQLString
变量,以便在SQL查询中设置它(使用Mysql Connector C++)。所以,这是我的代码:
CComboBox *pComboRule = (CComboBox*)GetDlgItem(ID_EDIT_RULE);
CComboBox *pComboAg1 = (CComboBox*)GetDlgItem(ID_EDIT_AG1);
CComboBox *pComboAg2 = (CComboBox*)GetDlgItem(ID_EDIT_AG2);
CComboBox *pComboAg3 = (CComboBox*)GetDlgItem(ID_EDIT_AG3);
CString &AG1 = CString(_T("A string"));
CString &AG2 = CString(_T("A string"));
CString &AG3 = CString(_T("A string"));
CString str;
pComboAg1->GetLBText(pComboAg1->GetCurSel(), AG1);
pComboAg2->GetLBText(pComboAg2->GetCurSel(), AG2);
pComboAg3->GetLBText(pComboAg3->GetCurSel(), AG3);
try {
std::string s = CStringA(AG1);
sql::PreparedStatement *pstmt = con->prepareStatement("SELECT `nAccessIdn` FROM `base`.`tb_table` WHERE `field` IN (?, ?, ?) LIMIT 3");
pstmt->setString(1, s);
pstmt->setString(2, s);
pstmt->setString(3, s);
sql::ResultSet *res = pstmt->executeQuery();
if (res->rowsCount() != 0) {
while (res->next())
{
str.Format(_T("AG : %srn"), res->getString(1));
OutputDebugString(str);
}
}
}
catch (const std::bad_alloc& e) {
CString itemString;
itemString.Format(_T("SQLException %s"), CString(e.what()));
MessageBox(itemString, _T("Failed Logon Attempt"), MB_OK | MB_ICONERROR);
}
我已经尝试了很多类似的东西
std::string s((LPCTSTR)AG1);
或
std::basic_string<TCHAR>
或
std::string std(somStr, someStr.GetLength());
或
CT2A(cst.GetString());
或
char* myStr = "This is a C string!";
std::string myCppString = myStr;
等。。。
有谁知道成功的方法?
详:
Visual Studio 2017 Community Edition - Unicode 项目 - Runtime Library :/MDd
非常感谢您的帮助:)
编辑:新手在C++,代码更新。
CString &AG1 = CString(_T("A string"));
pComboAg1->GetLBText(pComboAg1->GetCurSel(), AG1);
这在很多方面都是错误的。 AG1
是指向某些固定数据的指针,您正在使用其他内容设置AG1
。
只需使用:
CString AG1;
pComboAg1->GetLBText(pComboAg1->GetCurSel(), AG1);
您的 SQL 数据应为 UTF-8。如果要创建新的 MFC 程序,则默认情况下启用UNICODE
选项(UTF-16)。
从数据库获取数据:
std::string str;
//get str from databases
CStringW atl = CA2W(str.c_str(), CP_UTF8);
combobox.AddString(atl);
将数据发送到数据库:
CString AG1;
combobox.GetLBText(0, AG1);
std::string str = CW2A(AG1, CP_UTF8);
...
在极少数情况下,数据可能是 ANSI,在这种情况下,请删除 CP_UTF8
标志。
CString to std::string
CString cstr = L"Hello";
std::string str = std::string(CStringA(cstr));
CString to sql::SQLString
CString cstr = L"Hello";
std::string str = std::string(CStringA(cstr));
sql::SQLString sqstr = sql::SQLString(str.c_str());
相关文章:
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- "No suitable conversion function from 'std::string' to 'const char *' exists"
- 如何'Invalid conversion'和'no match for operator'更正这些 c++ 错误
- 访问函数变体时"Invalid conversion"错误
- 提升获取文本的区域设置"Conversion failed"
- C++17 编解码器在将标准::字符串转换为标准::字符串时抛出"bad conversion"
- 为什么我会收到"invalid conversion from 'Queue*/Stack*' to 'int'"错误消息?
- 函数模板不起作用,出现错误"No suitable user-defined conversion"
- 在C++中使用地图时"No viable conversion from..."
- Libav AVFrame to Opencv Mat to AVPacket conversion
- cpp rgb to yuv422 conversion
- 尝试将类作为参数传递给不同的类构造函数,但收到"conversion"错误
- "Ambiguous conversion sequence" - 这个概念的目的是什么?
- Python bool conversion to C++ (pybind11)
- conversion to int16_t c++
- 使用strupr和strlwr时如何解决错误"invalid conversion of char to char*"?
- 如何解决"expected constructor, destructor, or type conversion before ‘(’ token"错误?
- "conversion from void to non scalar type string"是什么意思?
- CString to std::string or sql::SQLString conversion - C++