C++Primer Plus中指针与字符串例程VS2017版
#include "pch.h" #include <iostream> #include <iomanip> #include <cmath> #include <string> #include <cstring> //#include <climits> using namespace std; int main() { char animal[20] = "bear"; const char* bird = "wren"; char* ps; cout << animal << " and "; cout << bird << '\n'; cout << "Enter a kind of animal: "; cin >> animal; ps = animal; cout << ps << "!\n"; cout << "Before using strcpy():\n"; cout << animal << " at " << (int *)animal << endl; cout << ps << " at " << (int*)ps << endl; ps = new char[strlen(animal) + 1]; strcpy_s(ps, strlen(animal) + 1,animal); cout << "After using strcpy():\n"; cout << animal << " at " << (int*)animal << endl; cout << ps << " at " << (int*)ps << endl; delete [] ps; return 0; }
书籍中给出的源码在VS2017环境下编译会报错,因为VS2017需要使用strcpy()的安全版本strcpy_s(),然而当我们直接替换时,编译器仍然会报错,这是因为strcpy_s()中的参数与strcpy并不完全相同,需要保证缓冲区,直接new的话仍然会报错,需要在strcpy_s()中第二个参数加入被cpy参数的长度。修改完成再编译即可通过。