C++テストコード
8648 ワード
1 /*
2 n n
3 */
4
5 #include <iostream>
6
7 unsigned long left(unsigned long num, int n);
8 char * left(char * str, int n);
9
10 using namespace std;
11
12 int main()
13 {
14 unsigned long num;
15 int n;
16 cout << " :";
17 cin >> num;
18 cout << " :";
19 cin >> n;
20 cout << " " << n << " " << left(num, n) << endl;
21
22 char * str = new char(20);
23 cout << " :";
24 cin >> str;
25 cout << " :";
26 cin >> n;
27 cout << " " << n << " " << left(str, n) << endl;
28
29 //delete[] str;
30
31 cin.get();
32 cin.get();
33 }
34
35
36 unsigned long left(unsigned long num, int n)
37 {
38 unsigned long len = 1; //
39 unsigned long temp_num = num;
40 while (temp_num /= 10)
41 {
42 len++;
43 }
44 unsigned long cut_num_len = len - (unsigned long(n) >= len ? len : unsigned long(n)); // n ,
45 while (cut_num_len--)
46 {
47 num /= 10;
48 }
49 return num;
50 }
51
52 char * left(char * str, int n)
53 {
54 int len = strlen(str);
55 n = n >= len ? len : n;
56 char * temp_char = new char(n + 1);
57
58 for (int i = 0; i < n; i++) {
59 *(temp_char + i) = *(str + i);
60 }
61 temp_char[n] = '\0';
62 return temp_char;
63 }
皆さん、私が//delete[]strをキャンセルしたとき、質問があります.注釈後、プログラムが間違っているのは、new自作のポインタならdeleteを落としたほうがいいという励ましではないでしょうか.正解を求める.