【发布时间】:2020-08-19 10:16:00
【问题描述】:
我想将char* 一行命令转换为字符串数组。我尝试了什么:
void parse(char* cmd, int length) {
std::string *arguments = nullptr;
int amount = 0;
for (int i = 0; i < length; i++) {
if (cmd[i] == ' ' || cmd[i] == '\t' || cmd[i] == '\n') {
amount++;
continue;
}
arguments[amount] = cmd[i];
}
}
但我不确定std::string *arguments = nullptr; 部分。我不知道cmd 中的参数数量,所以我不确定如何正确初始化arguments 数组。在 C 中我可能应该用 malloc 解决它,但我如何在 C++ 中解决它?另外,由于我想返回arguments 和amount,如何将它们作为参数引用传递给parse 字符串?
【问题讨论】:
-
@esii cmd 是否指向字符串?
-
首选使用
vector。在 C++ 中避免vector类似于在 C 中避免memset和strcmp。 -
如果你的第一个想法是在 C 中使用 malloc,那么你在 C++ 中的第一个想法应该是使用
std::vector或std::unique_ptr -
'如何在 C++ 中解决它?'使用字符串向量
std::vector<std::string> arguments;。使用push_back将字符串添加到向量中,使用push_back将字符添加到字符串中。 -
std::istringstream和std::vector<std::string>的使用使这个操作变得微不足道。
标签: c++