質問するログイン新規登録

回答編集履歴

4

ソース修正

2018/08/02 21:31

投稿

cateye
cateye

スコア6851

answer CHANGED
@@ -32,18 +32,17 @@
32
32
  class Int{
33
33
  int val;
34
34
  int siz;
35
- char str[11];
35
+ int col[11];
36
36
  public:
37
37
  Int(int v):val(v),siz(0){
38
38
  int inx=0;
39
39
  do{
40
- str[inx++]= "0123456789"[v%10];
40
+ col[inx++]= v%10;
41
41
  }while(v/=10);
42
- str[inx]= '\0';
43
42
  siz= inx-1;
44
43
  }
45
44
 
46
- int operator[](int p)const{ return str[siz-p] & 0x0F;}
45
+ int operator[](int p)const{ return col[siz-p]; }
47
46
  };
48
47
 
49
48
  int main()

3

ソース追記

2018/08/02 21:31

投稿

cateye
cateye

スコア6851

answer CHANGED
@@ -21,4 +21,43 @@
21
21
  what(): basic_string::at: __n (which is 3) >= this->size() (which is 1)
22
22
  123Abort (core dumped)
23
23
  usr~/test/cpp %
24
+ ```
25
+ [intの桁指定?]
26
+ ```c++
27
+ usr~/test/cpp % cat tcp.cpp
28
+ //
29
+ #include <iostream>
30
+ using namespace std;
31
+ //
32
+ class Int{
33
+ int val;
34
+ int siz;
35
+ char str[11];
36
+ public:
37
+ Int(int v):val(v),siz(0){
38
+ int inx=0;
39
+ do{
40
+ str[inx++]= "0123456789"[v%10];
41
+ }while(v/=10);
42
+ str[inx]= '\0';
43
+ siz= inx-1;
44
+ }
45
+
46
+ int operator[](int p)const{ return str[siz-p] & 0x0F;}
47
+ };
48
+
49
+ int main()
50
+ {
51
+ int v= 123456;
52
+ //
53
+ Int s(v);
54
+ //
55
+ cout << s[4] << " " << s[2] << endl;
56
+
57
+ return 0;
58
+ }
59
+
60
+ usr~/test/cpp % ./a.out
61
+ 5 3
62
+ usr~/test/cpp %
24
63
  ```

2

追記

2018/08/02 13:57

投稿

cateye
cateye

スコア6851

answer CHANGED
@@ -1,3 +1,24 @@
1
1
  たぶんstr1.at()がout_of_rangeを発生しているのだと思いますが、デバッガで追いかけられませんか?
2
2
  ~~また、整数をstringにしているようですがなぜ小数点'.'が出てくるのか??~~
3
- ・・・申し訳ないですが、LやHなど意味不明(私には)変数名なので、見る気が起きません。
3
+ ・・・申し訳ないですが、LやHなど意味不明(私には)変数名なので、見る気が起きません。
4
+ [追記]
5
+ とりあえず動かしてみましたが、ヒントになりますか?
6
+ ```txt
7
+ usr~/test/cpp % ./tcp
8
+ 5
9
+ 5
10
+ 12345
11
+ 12345
12
+ 2
13
+ terminate called after throwing an instance of 'std::out_of_range'
14
+ what(): basic_string::at: __n (which is 1) >= this->size() (which is 1)
15
+ Abort (core dumped)
16
+ usr~/test/cpp % ./tcp
17
+ 5
18
+ 5
19
+ 123.45
20
+ terminate called after throwing an instance of 'std::out_of_range'
21
+ what(): basic_string::at: __n (which is 3) >= this->size() (which is 1)
22
+ 123Abort (core dumped)
23
+ usr~/test/cpp %
24
+ ```

1

誤記修正

2018/08/01 14:31

投稿

cateye
cateye

スコア6851

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