回答編集履歴

4

ソース修正

2018/08/02 21:31

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
  int siz;
68
68
 
69
- char str[11];
69
+ int col[11];
70
70
 
71
71
  public:
72
72
 
@@ -76,11 +76,9 @@
76
76
 
77
77
  do{
78
78
 
79
- str[inx++]= "0123456789"[v%10];
79
+ col[inx++]= v%10;
80
80
 
81
81
  }while(v/=10);
82
-
83
- str[inx]= '\0';
84
82
 
85
83
  siz= inx-1;
86
84
 
@@ -88,7 +86,7 @@
88
86
 
89
87
 
90
88
 
91
- int operator[](int p)const{ return str[siz-p] & 0x0F;}
89
+ int operator[](int p)const{ return col[siz-p]; }
92
90
 
93
91
  };
94
92
 

3

ソース追記

2018/08/02 21:31

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -45,3 +45,81 @@
45
45
  usr~/test/cpp %
46
46
 
47
47
  ```
48
+
49
+ [intの桁指定?]
50
+
51
+ ```c++
52
+
53
+ usr~/test/cpp % cat tcp.cpp
54
+
55
+ //
56
+
57
+ #include <iostream>
58
+
59
+ using namespace std;
60
+
61
+ //
62
+
63
+ class Int{
64
+
65
+ int val;
66
+
67
+ int siz;
68
+
69
+ char str[11];
70
+
71
+ public:
72
+
73
+ Int(int v):val(v),siz(0){
74
+
75
+ int inx=0;
76
+
77
+ do{
78
+
79
+ str[inx++]= "0123456789"[v%10];
80
+
81
+ }while(v/=10);
82
+
83
+ str[inx]= '\0';
84
+
85
+ siz= inx-1;
86
+
87
+ }
88
+
89
+
90
+
91
+ int operator[](int p)const{ return str[siz-p] & 0x0F;}
92
+
93
+ };
94
+
95
+
96
+
97
+ int main()
98
+
99
+ {
100
+
101
+ int v= 123456;
102
+
103
+ //
104
+
105
+ Int s(v);
106
+
107
+ //
108
+
109
+ cout << s[4] << " " << s[2] << endl;
110
+
111
+
112
+
113
+ return 0;
114
+
115
+ }
116
+
117
+
118
+
119
+ usr~/test/cpp % ./a.out
120
+
121
+ 5 3
122
+
123
+ usr~/test/cpp %
124
+
125
+ ```

2

追記

2018/08/02 13:57

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -3,3 +3,45 @@
3
3
  ~~また、整数をstringにしているようですがなぜ小数点'.'が出てくるのか??~~
4
4
 
5
5
  ・・・申し訳ないですが、LやHなど意味不明(私には)変数名なので、見る気が起きません。
6
+
7
+ [追記]
8
+
9
+ とりあえず動かしてみましたが、ヒントになりますか?
10
+
11
+ ```txt
12
+
13
+ usr~/test/cpp % ./tcp
14
+
15
+ 5
16
+
17
+ 5
18
+
19
+ 12345
20
+
21
+ 12345
22
+
23
+ 2
24
+
25
+ terminate called after throwing an instance of 'std::out_of_range'
26
+
27
+ what(): basic_string::at: __n (which is 1) >= this->size() (which is 1)
28
+
29
+ Abort (core dumped)
30
+
31
+ usr~/test/cpp % ./tcp
32
+
33
+ 5
34
+
35
+ 5
36
+
37
+ 123.45
38
+
39
+ terminate called after throwing an instance of 'std::out_of_range'
40
+
41
+ what(): basic_string::at: __n (which is 3) >= this->size() (which is 1)
42
+
43
+ 123Abort (core dumped)
44
+
45
+ usr~/test/cpp %
46
+
47
+ ```

1

誤記修正

2018/08/01 14:31

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -1,5 +1,5 @@
1
1
  たぶんstr1.at()がout_of_rangeを発生しているのだと思いますが、デバッガで追いかけられませんか?
2
2
 
3
- また、整数をstringにしているようですがなぜ小数点'.'が出てくるのか??
3
+ ~~また、整数をstringにしているようですがなぜ小数点'.'が出てくるのか??~~
4
4
 
5
5
  ・・・申し訳ないですが、LやHなど意味不明(私には)変数名なので、見る気が起きません。