簡體   English   中英

在c ++中將字符串向量轉換為char數組

[英]Convert string vector to char array in c++

我正在嘗試將字符串向量轉換為c ++中的char數組。

更具體地說,我要做的是通過使用以下方法拆分像“ls -latr”這樣的shell命令:

istringstream f(x);
while (getline(f, x, ' '))
{
    strings.push_back(x);
}

我相信這會給我strings[0] == "ls"strings[1]==" -latr"

我正在嘗試執行以下操作:

execvp(strings[0], strings);

但是,我收到此錯誤:

錯誤:無法將'std :: basic_string,std :: allocator>'轉換為'const char *'以將參數'1'轉換為'int execvp(const char *,char * const *)'

因此,我試圖找出如何將字符串轉換為char數組。

閱讀手冊顯示“ execvp提供了一個指向以null結尾的字符串的指針數組”。 所以你需要創建這樣一個數組。 這是一種方式:

std::vector<char *> argv(strings.size() + 1);    // one extra for the null

for (std::size_t i = 0; i != strings.size(); ++i)
{
    argv[i] = &strings[i][0];
}

execvp(argv[0], argv.data());

您可以嘗試使用std::string c_str()方法。 它從std::string類返回類似C的字符串,即execvpe所需的char *。 查看此鏈接了解更多詳情。

如果char數組不會被更改,您可以使用

strings[0].c_str()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM