質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

4215閲覧

文字列として読み込んだ数列を1桁ずつintに変換する方法について

vain_taka

総合スコア14

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/07/06 15:45

編集2019/07/06 15:46

文字列として読み込んだ数列(例:"34514678")を一桁ずつintに変換し、配列に一桁ずつ入れる方法についてです。
ネットで検索すると以下のコードが出てきました。

c++

1#include <iostream> 2#include <string> 3using namespace std; 4 5int main(void) { 6 7 string str; //今回は15文字入力と予めわかっている 8 int N[15]; 9 10 cin >> str; 11 12 for (int i = 0; i < 15; ++i) { 13 14 N[i] = (int)(str[i] - '0'); //str[i] はchar型なのでchar→intへ変換 15 16 cout << N[i] << endl; //確認のため表示 17 18 } 19 20 return 0; 21}

これの

N[i] = (int)(str[i] - '0'); //str[i] はchar型なのでchar→intへ変換

というコードの意味が理解できません。str[i]から'0'を引いているのにはどのような意図があるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

  • プログラム上では、文字は数値として扱われています。
  • は0から9まで連続した数が割り振られています。

C++

1#include <cstdio> 2 3int main(void) { 4 std::printf("%d\n", '0'); 5 std::printf("%d\n", '1'); 6 std::printf("%d\n", '2'); 7 std::printf("%d\n", '3'); 8 std::printf("%d\n", '4'); 9 std::printf("%d\n", '5'); 10 std::printf("%d\n", '6'); 11 std::printf("%d\n", '7'); 12 std::printf("%d\n", '8'); 13 std::printf("%d\n", '9'); 14 15 std::printf("---\n"); 16 std::printf("%d - %d = %d\n", '7', '0', '7'-'0'); 17}

実行結果 Wandbox

48 49 50 51 52 53 54 55 56 57 --- 55 - 48 = 7

投稿2019/07/06 16:37

編集2019/07/06 23:31
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

参考情報

  • char型で入力された文字列をint型数値に変換する式の「 - '0'」について

https://teratail.com/questions/27934

  • char が表す数字を int へ変換したい

https://qiita.com/EqualL2/items/b4683db7ab4e90545bb2

  • int型をchar型に変換する方法【数字化 数値の文字列化】

https://marycore.jp/prog/c-lang/convert-number-to-char/

  • Why does char - '0' successfully convert a char to int in C?

https://www.quora.com/Why-does-char-0-successfully-convert-a-char-to-int-in-C

...
why does int sub = '7' - '0'; result in the value 7 being stored in sub?
...
The ASCII character ‘0’ is represented by 48 (decimal)
The ASCII character ‘9’ is represented by 57 (decimal)
The ASCII characters ‘1’–’8′ are between them…
So, '7' - '0' is exactly the same operation as 55 - 48, so you get a 7
...

投稿2019/07/06 20:11

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問