В настоящее время я пишу программу, которая может преобразовывать несколько математических функций, таких как преобразование чисел с плавающей точкой в косинусы, натуральные журналы и т. Д. Я также включаю способ преобразования формата даты m/dd/yyyy
в формат mm-dd-yyyy
.Я пытаюсь разметить c-строку символом «/», а затем объединить ее вместе с «-».Проблема в том, что visual studio выдает мне код ошибки C4996 и говорит, что моя функция может быть небезопасной.Я знаю, что могу отключить это, чтобы они не выдавали мне такого рода предупреждения, но когда я запускаю программу, функция strtok
, похоже, ничего не делает.
#include <iostream>
#include <cstring>
using namespace std;
//KEEP IN MIND THIS IS ONLY ONE PART OF THE PROGRAM, I have more includes, and this is under the main function. (I only included relevant includes)
//If they enter 4 to convert a cstring date.
if (input == 4) {
cout << "You entered: change the format of a cstring date" << endl;
cout << "Please enter a date in the format of mm/dd/yyyy: " << endl;
char str[12]; //C-String to hold input
cin >> str;
//Create an char[] to hold the answer
char newStr[32];
// Returns first token
char* token = strtok(str, "/");
// Keep printing tokens while one of the
// delimiters present in str[].
while (token != NULL)
{
strcat_s(newStr, token); //Cat it to string
strcat_s(newStr, "-"); //Add the -
token = strtok(NULL, "/");
}
cout << "Your new Date is: " << newStr;
return 0;
}
Даже когдаЯ пропускаю сообщение об ошибке и запускаю программу, например, введите: 11/22/3333
Я получаю вывод 11/22/3333