如何在c++中将pid转换为const字符指针
How to convert pid to const char pointer in c++?
我正在尝试将pid类型转换为const char指针,以便可以将它们作为execlp函数中的参数传入。
例如。execlp("/bin/ps", "-f", "--ppid", "9340,9345,9346,9342");
我知道你可以把pid转换成字符串,例如const std::string my_pid(str_pid.str());
和指向常量字符指针的字符串,例如my_pid.c_str();
但是,如何将多个pid连接到一个const char指针中,以便我可以使用它们运行execlp命令呢?
ostringstream
可能就是您想要的。
例如,
std::ostringstream ostr;
for (int i=0; i<pids.count(); i++)
{
if (i > 0) ostr << ',';
ostr << pids[i];
}
execlp("/bin/ps", "-f", "--ppid", ostr.str().c_str());
您可以将所有值连接到一个单独的std::string
中,然后将最终的std::string
值传递给execlp()
,例如:
std::string pids;
for (however many pids you have)
{
if (!pids.empty())
pids += ",";
pids += std::string(str_pid.str());
}
execlp("/bin/ps", "-f", "--ppid", pids.c_str());
字符串流是一种很好的C++方法。
std::stringstream myStream;
myStream << "a c string" << aStringObject << std::endl; // operate on the stream
std::string myNewString = myStream.str(); // create a string object
将数据视为流是一种相当通用的方法,可以使您序列化和反序列化自定义或内置类型。自定义类型可以包括operator<<
和operator>>
,以分别允许插入和提取。
与使用临时字符串对象和操作它们相比,这种方法还应该具有速度优势。托管流(或其任何基类(将在盖子下使用缓冲区。带有临时字符串的循环在每次迭代中将调用更多的构造函数/分配/析构函数。这也取决于底层的字符串表示。写时复制(COW(字符串实现将具有较少的分配,并且可能只更新引用,但是更新工作字符串仍然需要新的字符串。
相关文章:
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 使用 fopen 打开 .pak 文件并使该文件应用于 const 无符号字符* (C++)
- 如何在 c++ 中将向量转换为<string>常量字符* const*?
- 为什么 const int 适用于字符大括号初始化?
- 为什么我不能使用与"常量字符*"相同的"const int*"创建一个 int 数组?
- 为什么静态常量字符 * const 变量在为左值时可绑定到右值引用参数
- std::转换为常量字符 * 的字符串在 std::unordered_set<const 字符 * 中找不到>
- 从 sub_match<常量字符 *>' 转换为'const char *const &'
- ERROR字符和const字符
- C++ : 为什么我不能使用 sprintf 打印 const 字符*?
- 赛格在一辆汽车上出错,从无符号的字符转换为 const 字符 在C++
- 通过连接另一个字符*初始化const字符*
- 具有模板参数大小与字符指针的 const 字符数组
- 对Const字符字符串[]使用字符串函数
- 将字符串函数复制到非const字符缓冲区
- 可以创建匿名非const字符数组
- 如何在c++中将pid转换为const字符指针
- c++字符到const字符*
- 将字符串转换为 const* 字符
- 无法成功返回我通过在字符串上调用 c_str() 创建的 const 字符*。(C++)