PLCXProcess.cpp:2467:46: error: 'class oracle::occi::Number' has no member named 'c_str' sprintf(pPCXPackage->seqNo, "%s", numIdNo.c_str());
时间: 2024-02-26 14:59:12 浏览: 131
这个错误提示说`Number`类没有名为`c_str()`的成员函数,因此无法将其转换为C风格字符串。可能是你误将`Number`类看作了`std::string`类。
要解决这个问题,可以考虑将`Number`对象转换为`std::string`对象,然后再使用`c_str()`函数将其转换为C风格字符串。具体来说,可以使用`toText()`函数将`Number`对象转换为`oracle::occi::String`对象,再使用`c_str()`函数将其转换为C风格字符串。修改后的代码如下:
```
oracle::occi::String strIdNo = numIdNo.toText();
sprintf(pPCXPackage->seqNo, "%s", strIdNo.c_str());
```
这样就可以将`Number`对象转换为C风格字符串并赋值给`seqNo`变量了。
相关问题
PLCXProcess.cpp:2663:46: error: 'class oracle::occi::Number' has no member named 'c_str' sprintf(pPCXPackage->seqNo, "%s", numIdNo.c_str());
这是一个编译错误,原因是在使用`c_str()`方法时,类型为`oracle::occi::Number`的对象没有该方法。`c_str()`是`string`类的方法,它可以将`string`类型的字符串转换为C风格的字符串。
在你的代码中,`numIdNo`应该是一个`oracle::occi::Number`类型的对象,而它并没有`c_str()`方法,因此编译器会报错。你需要将其转换为`string`类型,然后再使用`c_str()`方法。
可以尝试使用以下代码:
```cpp
sprintf(pPCXPackage->seqNo, "%s", std::to_string(numIdNo.getValue()).c_str());
```
这里使用了`to_string()`方法将`Number`类型的对象转换为`string`类型的字符串,然后再使用`c_str()`方法转换为C风格的字符串。
PLCXProcess.cpp:3721:51: error: expected ')' before ';' token pStmt->setDouble(4, atof(strTradeAmount.c_str()); ^ PLCXProcess.cpp:3722:46: error: expected ')' before ';' token pStmt->setDouble(5, atof(strAgtFee.c_str()); ^ PLCXProcess.cpp: In member function 'int CPLCXProcess::insertcsdaily(oracle::occi::Connection*, XHX_PLCX_REPACKBODY*, bool, bool)': PLCXProcess.cpp:3893:51: error: expected ')' before ';' token pStmt->setDouble(4, atof(strTradeAmount.c_str()); ^ PLCXProcess.cpp:3894:46: error: expected ')' before ';' token pStmt->setDouble(5, atof(strAgtFee.c_str()); ^
这是一个编译错误,看起来是在PLCXProcess.cpp文件中的insertcsdaily函数中的setDouble方法中出现了语法错误。缺少一个右括号')',可能是因为atof函数的调用缺少右括号。你可以检查一下PLCXProcess.cpp文件中这些行的代码,看看是否有语法错误,并且确保所有函数调用都有正确的参数列表。
阅读全文
相关推荐
















