There is no direct replacement for QString, but std::string is close. See:
https://cplusplus.com/reference/string/string/ On 1/27/23 19:47, enz...@gmx.com wrote:
sorry that means nothing to me as to what to replace the qstring below with On Fri, 27 Jan 2023 19:38:51 -0500 Chris Moller<mol...@mollerware.com> wrote:QString is mmore or less equivalent to the C++ std::string class. On 1/27/23 18:00,enz...@gmx.com wrote:what do i replace all the qstring with /apl/libapl/c > grepi qstring ./aplexec.h:18:aplExec (apl_op_e apl_op, QString &cmd, ./aplexec.h:19:QString &outString, QString &errString); ./libaplc.c:12:AplExec::aplExec (apl_op_e apl_op, QString &cmd, ./libaplc.c:13:QString &outString, QString &errString) ./libaplc.c:29:outString = QString (outbuffer.str ().c_str ()); ./libaplc.c:30:errString = QString (errbuffer.str ().c_str ()); ./libaplc.c:40:outString = QString (res); ./libaplc.c:44:errString = QString (errbuffer.str ().c_str ()); On Fri, 27 Jan 2023 17:18:01 -0500 Chris Moller<mol...@mollerware.com> wrote:Qt isn't necessary--that's just the environment I'm working in. From my example, get rid of the #include <QtWidgets>line. Here's aplexec.h: #ifndef APLEXEC_H #define APLEXEC_H #include <QtWidgets> #include <apl/libapl.h> #define APL_VARIABLE "([⍙∆a-z][⍙∆_a-z0-9]*)" typedef enum { APL_OP_EXEC, APL_OP_COMMAND } apl_op_e; class AplExec { public: static LIBAPL_error aplExec (apl_op_e apl_op, QString &cmd, QString &outString, QString &errString); }; #endif // APLEEXEC_H Again, you don't need the Qt stuff. Mostly, what you need is the #include <apl/libapl.h> line. And you probably don't need the #define APL_VARIABLE "([⍙∆a-z][⍙∆_a-z0-9]*)" line For this to work at all, you need to build Jürgen's APL twice, once as usual to install apl itself, and a second time with ./configure --with-libapl make install (with any other options you need on the configure) What this does is put apl-related stuff in /usr/local/include and /usr/local/lib. (I think I manually copied Error.def from the apl source tree into /usr/local/include--I don't think it gets copied with the make install.) On 1/27/23 16:28,enz...@gmx.com wrote:Chris i don't have qt installed nor do i have your #include "aplexec.h" On Fri, 27 Jan 2023 11:23:08 -0500 Chris Moller<mol...@mollerware.com> wrote:For what it's worth, in an ongoing project in use: #include <QtWidgets> #include <iostream> #include <sstream> #include <apl/libapl.h> #include "aplexec.h" LIBAPL_error AplExec::aplExec (apl_op_e apl_op, QString &cmd, QString &outString, QString &errString) { LIBAPL_error execerr = LAE_NO_ERROR; switch(apl_op) { case APL_OP_EXEC: { std::stringstream outbuffer; std::streambuf *coutbuf = std::cout.rdbuf(); std::cout.rdbuf(outbuffer.rdbuf()); std::stringstream errbuffer; std::streambuf *cerrbuf = std::cerr.rdbuf(); std::cerr.rdbuf(errbuffer.rdbuf()); execerr = apl_exec (cmd.toStdString ().c_str ()); std::cout.rdbuf(coutbuf); std::cerr.rdbuf(cerrbuf); outString = QString (outbuffer.str ().c_str ()); errString = QString (errbuffer.str ().c_str ()); } break; case APL_OP_COMMAND: { std::stringstream errbuffer; std::streambuf *cerrbuf = std::cerr.rdbuf(); std::cerr.rdbuf(errbuffer.rdbuf()); const char *res = apl_command (cmd.toStdString ().c_str ()); if (res) { outString = QString (res); free ((void *)res); } std::cerr.rdbuf(cerrbuf); errString = QString (errbuffer.str ().c_str ()); } break; } return execerr; } I.e., I'm capturing stdout and stderr in strings.
OpenPGP_0xDA6C01938888083E.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature