我正在尝试从命令行读取一些数据,然后将其传递到字符数组以进行进一步处理。
#define former_array {"hello","world"}
void other_process(int argc, char *argv[])
{
const char *arr[] = former_array;
}
int main(int argc, char *argv[])
{
other_process(argc, argv);
}
原代码是静态编写的。我试图通过从命令行读取数据来重写它。所以我把它改为在 main 函数中添加这个词:
std::vector<const char*> former_array = {};
void other_process(int argc, char *argv[])
{
const char *arr[] = former_array;
}
int main(int argc, char *argv[])
{
former_array.push_back("hello");
other_process(argc, argv);
}
但是我遇到了错误。 错误:初始化程序无法确定“former_array”的大小 const char *arr[] = previous_array;
错误:数组必须使用大括号括起来的初始值设定项进行初始化 const char *arr[] = previous_array;
我不想更改 const char *arr[] = previous_array; 的格式因为我需要 arr 进行其他过程。 知道如何解决这个问题吗? 谢谢。
最佳答案
您可以利用标准库并编写如下内容:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
int main(int argc, char *argv[])
{
std::vector<std::string> args { "Previous..."};
args.insert(args.end(), argv, argv + argc);
// you can start from ^^^^ argv + 1 if you don't need the program name
args.emplace_back("final.");
std::copy(args.begin(), args.end(),
std::ostream_iterator<std::string>(std::cout, "\n"));
}
关于c - 使用命令行中的值形成字符数组并将其传递给其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45194108/