Предположим, у меня есть такая программа:
#include <iostream>
#include <string>
#include <vector>
// Takes values and outputs a string vector.
std::vector<std::string> foo(const int argc, char* args[]) {
std::vector<std::string> strings;
for (int i = 0; i < argc; i++)
strings.push_back(args[i]);
return strings;
}
int main(int argc, char *args[]) {
std::vector<std::string> strings = foo(argc, args);
for (unsigned int i = 0; i < strings.size(); i++)
std::cout << strings[i] << std::endl;
return 0;
}
Суть в том, что я пытаюсь передать аргумент char** функции main() другой функции или классу. (Я понимаю, что есть лучшие способы добиться того, что делает вышеуказанная программа, мой вопрос касается передачи аргументов char ** только для чтения).
Вопросы:
- Я обнаружил, что не могу сделать второй аргумент foo() константным, как первый. Почему это? Символ** не может быть преобразован в константный символ**?
- Я хочу передать этот аргумент как «только для чтения». Я не уверен, как это сделать, если бы это была строка, которую я бы передал через ссылку на константу, но я не уверен, как это сделать с указателями?
std::vector<std::string> args(argv+1, argv+argc);
(argv+1
, чтобы пропустить имя программы) - person Ted Lyngmo   schedule 11.02.2019