новичок здесь. Я пытаюсь объединить args программы C++ в один массив символов. По какой-то причине, strcat
избирательно игнорируя argv[2]
в для цикла:C++ strcat игнорирует аргумент?
#include <cstring>
int main(int argc, char *argv[]) {
char *argstr = argv[1];
for(int i=2; i < argc; i++) {
argstr = std::strcat(argstr, " ");
argstr = std::strcat(argstr, argv[i]);
}
std::cout << argstr << std::endl;
return 0;
}
Файл называется qtimer
. Таким образом, ожидаемый результат бега:
qtimer asdf 1 2 3
будет:
asdf 1 2 3
, но вместо этого он выводит:
asdf 2 3
(с двумя пробелами после asdf
)
Может ли кто-нибудь объяснить, почему это так? Кроме того, есть ли лучший способ сделать это?
'std :: strcat' просто выглядит неправильно! Вы не должны использовать эти функции c мусора, когда у вас есть 'std :: string'. –