_arguments = std::vector<std::string *>();
我已经声明了上述向量,并且想将其用于execvp()
int execvp(const char *file, char *const argv[]);
如何转换类型以适合此功能?
应该是这样的
execvp(_arguments[0], _arguments)
答案 0 :(得分:3)
您将需要创建一个新的指针数组,以指向字符串的数据,而不是from datetime import datetime
employee_train['DOJ']=employee_train['DOJ'].apply(lambda x: datetime.strptime(x,'%d-%m-%y'))
employee_train['DOJ_month']=employee_train['DOJ'].apply(lambda x: x.month)
employee_train['DOJ_year']=employee_train['DOJ'].apply(lambda x: x.year)
本身。有很多方法可以做到这一点,但是一种简单的方法是使用另一种INSERT INTO OPENQUERY([103.21.58.192], 'SELECT * FROM [amurajbg_ss].[dbo].[AccLedgers]')
SELECT *
FROM OPENQUERY([USER-PC\SQLEXPRESS],
'DECLARE @LastSyncDate AS DATETIME
DECLARE @CurrentSyncDate AS DATETIME
SELECT @CurrentSyncDate = GETDATE()
SELECT @LastSyncDate = LastSyncDate
FROM [CrushMate].[dbo].[Sync]
SELECT * FROM [CrushMate].[dbo].[AccLedgers]
WHERE CreatedDate BETWEEN @LastSyncDate AND @CurrentSyncDate
AND Status=''True'' ')
和结构化的for循环:
std::string
答案 1 :(得分:1)
您不能直接使用它。您需要将指向每个string
内部缓冲区的指针复制到另一个vector
中。
假设arguments_
的初始化如下:
std::vector<std::string*> arguments_ = {
new std::string("mycmd"),
new std::string("arg1"),
new std::string("arg2")
}
您可以这样呼叫execvp
:
// execvp needs a NULL terminator, so make argv one element longer
// than arguments_
std::vector<char*> argv(arguments_.size() + 1);
// copy pointers to each string's buffer into the new vector
std::transform(arguments_.begin(), arguments_.end(), argv.begin(),
[](std::string* arg) {
return arg->data();
});
// The last element of argv was implicitly initialized to a null pointer
// so this isn't actually necessary.
// I just included it to be explicit
argv.back() = nullptr;
// pass a pointer to the array of char*s to execvp
execvp(argv[0], argv.data());
请注意,此示例依赖于C ++ 17中添加的std::string::data
的非常量限定重载。如果您使用的是C ++标准的较旧版本,请改用&(*arg)[0]
。
答案 2 :(得分:-1)
_arguments = std::vector<std::string *>();
标准字符串类将其内部数据作为char
数组进行管理。
要访问内部数据,请调用方法data()
。返回类型为const char*
。
顺便说一句,std::string
的指针类型不是必需的。
也请参阅参考文献:http://www.cplusplus.com/reference/string/string/data/