C++で文字列の各文字をループ処理する方法
この記事では、C++で文字列内の各文字を1つずつ取り出して処理する方法を解説します。文字列のすべての文字をループ処理するには、インデックス0から「文字列の長さ − 1」まで繰り返すfor文を使用します。各位置の文字へのアクセスには、添字演算子「[ ]」またはstringオブジェクトのat()関数のいずれかを使えます。
入力と出力
入力: 文字列 "Hello World" 出力: "Hello World"
アルゴリズム
ステップ1: 処理対象の文字列を用意する ステップ2: インデックスiを0から文字列の長さ−1まで順に進める ステップ3: i番目の文字を取得して出力し、全文字に対して繰り返す
サンプルコード
#include<iostream>
using namespace std;
int main() {
string my_str = "Hello World";
for(int i = 0; i < my_str.length(); i++) {
cout << my_str.at(i) << endl; // i番目の文字を取得して表示
}
}実行結果
H e l l o W o r l d
補足: 範囲ベースfor文によるより簡潔な書き方
C++11以降では、範囲ベースfor文(range-based for)を使うことで、インデックス管理を行わずに各文字を簡潔に取り出すことができます。
for(char c : my_str) {
cout << c << endl;
}なお、at()関数は範囲外のインデックスを指定した場合にstd::out_of_range例外を送出するため、[]演算子よりも安全に文字へアクセスできるという利点があります。用途に応じて使い分けるとよいでしょう。
-
C++で文字列の長さを求める方法:基本テクニックとstrlen()関数の使い方
C++における文字列とは、ヌル文字(\0)で終端される1次元の文字配列のことです。文字列の長さとは、このヌル文字より前に存在する文字数を指します。例えば、次のような文字列を考えてみましょう。char str[] = The sky is blue; 上記の文字列に含まれる文字数 = 15それでは、文字列の長さを求めるプログラムを見ていきましょう。例1:whileループを使って文字数をカウントする方法#include<iostream> using namespace std; int main() { char str[] = Apple; &n
-
C++で文字のASCII値を取得・表示する方法を解説
ASCII(American Standard Code for Information Interchange:米国標準情報交換コード)には、0から127までの番号が振られた128種類の文字が定義されています。アルファベット、数字、記号など、さまざまな文字に固有の数値が対応付けられているのが特徴です。 主な文字とそのASCII値の例は以下のとおりです。 文字ASCII値 A65 a97 Z90 z122 $36 &38 ?63 大文字と小文字では異なる値が割り当てられている点にも注目してください。たとえば「A」は65、「a」は97となっており、両者の差は32です。この規