現場ですぐに使える! C/C++逆引き大全 560の極意

概 要

C言語やC++の開発者は、基本的なプログラミングスキルだけでなく、高速化や安全性を高めるためのノウハウなど、実務に即した能力が求めらています。本書は、現場ですぐに使えるをコンセプトに、C言語とC++の基本的な文法や関数、各種メソッドの使い方から実践的な資料例を多数紹介した逆引きテクニック集です。また、スマートポイントやラムダ式、また単体試験を行うために必須となっているCppUnitについても解説しています。

著者 増田智明
価格 本体3300円(税別)
ISBN 978-4-7980-5427-8
発売日 2018/3/27
判型 A5
ページ数 864
CD/DVD
ダウンロード
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

第1部 スタンダード・プログラミングの極意

第1章 C/C++の基礎

1-1 C/C++の基本

001 C言語とは

002 C++とは

003 C言語プログラムの構造

004 C++プログラムの構造

005 C/C++とライブラリ

006 C言語とほかのプログラム言語の連携

第2章 文法の極意

2-1 データ型

007 型とは

008 数値を扱う

009 16ビットで数値を扱う

010 32ビットで数値を扱う

011 64ビットで数値を扱う

012 単精度の実数を扱う

013 倍精度の実数を扱う

014 符号付きの整数であることを修飾する

015 符号なしの整数であることを修飾する

016 文字を扱う

017 32ビットで文字を扱う

018 真偽を扱う

019 型が指定されていないことを表す

020 ポインタを扱う

021 イテレータを扱う

022 配列を扱う

023 2次元以上の配列を扱う

024 ポインタの配列を使う

025 ヌルポインタを利用する

026 推論を利用する

2-2 演算子

027 演算子とは

028 加算する

029 減算する

030 乗算する

031 除算する

032 余りを計算する

033 プラスの数値であることを示す

034 マイナスの数値であることを示す

035 1つ加算する

036 1つ減算する

037 左シフトする

038 右シフトする

039 代入する

040 値が同じかを判定する

041 値が異なるか判定する

042 加算して代入する

043 減算して代入する

044 ビット単位で論理和する

045 ビット単位で論理積する

046 ビット単位で排他論理和する

047 ビット単位で否定する

048 2つの式の論理和を取る

049 2つの式の論理積を取る

050 指定した条件式の否定を取る

051 式を繋げる

052 ポインタが示す値を取得する

053 変数のポインタを取得する

054 構造体のメンバを参照する

055 ポインタからメンバを取得する

056 ポインタからメンバポインタを取得する

057 1つの式でif文を表す

058 スコープを明確に示す

059 演算子の優先順位

2-3 制御文

060 制御文とは

061 条件式を指定し、ブロックを実行する

062 if条件内で関数を使う

063 if条件内の評価順序を指定する

064 if、while条件内で変数に値を代入する

065 繰り返し処理をする(1)

066 繰り返し処理をする(2)

067 反復式を使う

068 終了条件式を使う

069 複数の初期化式を使う

070 複数の反復式を使う

071 条件が真の間、ブロックを繰り返す

072 無限ループを使う

073 繰り返し途中で最初に戻る

074 繰り返し途中で終える

075 コレクションを利用する

076 繰り返しを入れ子にする

077 複数に条件分岐する

078 複数の条件文(case)を使う

079 case文で内部変数を使う

080 switch文で条件にマッチしない場合を書く

081 指定位置にジャンプする

2-4 スコープ

082 スコープとは

083 内部変数を使う

084 すべてのスコープで使える変数を定義する

085 ブロックで変数のスコープを制御する

086 式を利用する

087 変数のアドレスを1つにする

088 変数をほかでも利用できるようにする

089 変数を変更できないようにする

090 固定値を列記する

091 関数のプロトタイプを記述する

092 構造体を記述する

093 共有体を記述する

094 型を分かりやすい名前で定義する

095 変数を別の型に変更する

096 型を変更する(1)(static_cast)

097 型を変更する(2)(const_cast)

098 型を変更する③(reinterpret_cast)

099 型を変更する④(dynamic_cast)

100 参照する変数を使う

101 関数の引数を定義する

102 関数の戻り値を定義する

103 ファイル単位でスコープを設定する

104 ラムダ式を利用する

105 ラムダ式のキャプチャリストを利用する

106 ラムダ式を再利用する

2-5 プリプロセッサ

107 プリプロセッサとは

108 文字列や数値を分かりやすい名前で定義する

109 引数を付けたマクロを定義する

110 内部変数を扱うマクロを定義する

111 指定した変数を文字列にする

112 指定した文字を繋げるマクロを定義する

113 シンボルが定義されているかチェックする

114 シンボルが定義されていないかチェックする

115 シンボルの値をチェックする

116 シンボルを未定義にする

117 コンパイラを制御する

118 コンパイルを中止する

119 定義済みのシンボルでコンパイルを制御する

120 ファイル名を取得する

121 行番号を取得する

122 コンパイルした日付を取得する

123 コンパイルした時刻を取得する

124 ほかのファイルを取り込む(1)

125 ほかのファイルを取り込む(2)

126 関数テンプレートを使う

127 クラステンプレートを使う

2-6 クラス

128 クラスとは

129 基底クラスを作成する

130 単一のクラスを継承したクラスを作成する

131 複数のクラスを継承したクラスを作成する

132 クラスのメンバを公開する

133 クラスのメンバを非公開にする

134 クラスのメンバを継承先にのみ公開する

135 公開されるクラスを指定する

136 継承先のメソッドを呼び出す

137 クラスに固定化された変数を指定する

138 クラスに固定化されたメソッドを指定する

139 クラスの生成時にメソッドを作成する

140 クラスの消滅時のメソッドを作成する

141 継承先でメソッドをオーバーライドする

142 継承先で演算子をオーバーライドする

143 クラスからオブジェクトを作成する

144 オブジェクトを破棄する

145 クラス内で自分自身を示すポインタを利用する

146 継承先で作成すべきメソッドを指定する

2-7 例外

147 例外処理とは

148 例外処理を記述する

149 例外を発生させる

150 例外が発生したときの情報を記述する

151 すべての例外を取得する

152 複数の例外を別々に取得する

第3章 標準関数の極意

3-1 高水準ストリーム

153 高水準ストリーム・低水準ストリームとは

154 コンソールから入力する(標準入力のためのストリーム)

155 コンソールへ出力する(標準出力のためのストリーム)

156 コンソールへエラー出力をする(標準エラーのためのストリーム)

157 ストリームに1文字書き出す

158 標準出力に1文字書き出す

159 標準出力に文字列を書き出す

160 標準出力に書式付きで文字列を書き出す(1)

161 標準出力に書式付きで文字列を書き出す(2)

162 ストリームから1文字を読み込む

163 標準入力から1文字を読み込む

164 標準入力から文字列を取得する

165 標準入力から書式付きで読み込む

166 文字列に書式を指定して書き出す

167 ファイルをオープンする

168 ファイルをクローズする

169 ファイルに1文字書き出す

170 ファイルに文字列を書き出す

171 ファイルに書式を指定して書き出す(1)

172 ファイルに書式を指定して書き出す(2)

173 ファイルから1文字読み込む

174 ファイルから文字列を読み込む

175 ファイルから書式付きで読み込む

176 ファイルにデータを書き出す

177 ファイルからデータを読み込む

178 ファイルの読み書き位置を移動する

179 ファイルの読み書き位置を取得する

180 読み書き位置が最後かチェックする

181 ファイル読み書きでエラーが発生したかチェックする

182 読み込みエラーをクリアする

183 読み書き位置を先頭に戻す

184 一時ファイルを作成する

3-2 低水準ストリーム

185 低水準ストリームを開く

186 低水準ストリームを閉じる

187 低水準ストリームを書き出しモードで開く

188 低水準ストリームからデータを読み込む

189 低水準ストリームへデータを書き出す

190 読み込み位置を変更する

191 読み込み位置が終端かをチェックする

192 アクセス許可マスクを設定する

3-3 ファイル操作

193 指定したファイルを削除する

194 カレントディレクトリを変更する

195 カレントディレクトリを取得する

196 ディレクトリを作成する

197 ディレクトリ内のファイルを検索する

198 ストリームからファイル番号に変換する

199 ファイルの長さを取得する(1)

200 ファイルの長さを取得する(2)

201 更新時刻を設定する

202 ファイルを削除する

203 ファイル名を変更する

204 ファイル属性を設定する

205 ファイル属性を取得する

206 ファイルが読み込み専用かチェックする

3-4 文字列操作

207 文字列をコピーする

208 文字列を文字数を指定してコピーする

209 文字列に別の文字列を追加する

210 文字列に別の文字列を文字数を指定して追加する

211 文字列を比較する

212 文字列を大文字/小文字を区別せずに比較する

213 文字列を文字数を指定して比較する

214 文字列を複製する

215 絶対値を取得する

216 文字列を数値に直す

217 文字列を指定した進数で直す

218 文字列から1文字を探す

219 文字列から単語を探す

220 文字列の最後から単語を探す

221 文字列の長さを取得する

222 文字列内で単語の位置を探す

223 文字セットに属さない文字位置を探す

224 システムエラーを取得する

225 文字列からトークンを探す

226 大文字に変換する

227 小文字に変換する

228 大文字かチェックする

229 小文字かチェックする

230 印刷できる文字かチェックする

231 アルファベットかチェックする

232 アルファベットあるいは数値かチェックする

233 空白文字かチェックする

234 ASCII文字かチェックする

235 コントロールコードかチェックする

236 数字かチェックする

237 16進数の文字かチェックする

238 表示可能な文字かチェックする

239 区切り文字かチェックする

240 マルチバイト文字をワイド文字に変換する

241 ワイド文字をマルチバイト文字に変換する

242 マルチバイト文字列をワイド文字列に変換する

243 ワイド文字列をマルチバイト文字列に変換する

3-5 メモリ操作

244 メモリを確保する(C言語)

245 メモリを再確保する

246 メモリを解放する(C言語)

247 メモリをコピーする

248 2つのメモリを比較する

249 重複したメモリをコピーする

250 指定したメモリから文字を探す

251 指定したメモリに値を設定する

252 変数のデータ量を取得する

253 メモリを確保する(C++)

254 メモリを解放する(C++)

3-6 時間操作

255 時刻を文字列に変換する

256 クロック時間を計算する

257 現地のタイムゾーンに変換する

258 時刻の差分を計算する

259 時刻の値を構造体に変換する

260 現地のタイムゾーンに合わせて変換する

261 現地時刻をカレンダー値に変換する

262 時刻を文字列に変換する

263 時刻を取得する

264 タイムゾーンを設定する

3-7 プロセス

265 プロセスを中止する

266 式を評価してプログラムを停止する

267 プログラムを終了する

268 スレッドを開始する(1)

269 スレッドを開始する(2)

270 スレッドを停止する(1)

271 スレッドを停止する(2)

272 新しい子プロセスを開始する

273 新しい子プロセスを環境変数を指定して開始する

274 新しい子プロセスをパスを指定して開始する

275 コマンドを実行する

276 新しいプロセスを作成して実行する

277 新しいプロセスを作成し、環境変数を指定して実行する

278 新しいプロセスを作成し、パスを指定して実行する

279 プロセスを終了する

280 環境変数を取得する

281 指定位置にジャンプする

282 ジャンプ先を設定する

283 エラーメッセージを出力する

284 割り込み処理を設定する

285 割り込みを発生させる

3-8 その他

286 可変引数を取得する

287 バイナリソートを利用する

288 クイックソートを利用する

第2部 アドバンスド・プログラミングの極意

第4章 STLの極意

4-1 ストリーム

289 ストリームとは

290 標準入力のためのストリームを利用する

291 標準出力のためのストリームを利用する

292 標準エラーのためのストリームを利用する

293 ストリームに書き出す

294 ストリームに改行を書き出す

295 ストリームにNULL文字を書き出す

296 ストリームに1文字書き出す

297 ストリームに指定バイト分書き出す

298 ストリームの出力をフラッシュする

299 ストリームから読み込む

300 ストリームから1文字読み込む

301 ストリームから1行読み込む

302 ストリームで数文字読み飛ばす

303 ストリームで次の1文字を得る

304 ストリームから指定バイト数読み込む

305 ストリームに1文字戻す

306 ストリームに指定文字を戻す

307 ストリームの読み込み位置を取得する

308 ストリームの読み込み位置を設定する

309 真偽値を文字列に変換する

310 数値を10進数に変換する

311 数値を8進数に変換する

312 数値を16進数に変換する

313 実数を固定小数点に変換する

314 実数を浮動小数点に変換する

315 文字列や数値を左揃えに変換する

316 文字列や数値を右揃えに変換する

317 小数点を表示する

318 符号を表示する

319 表示幅を指定する

320 埋める文字を指定する

321 実数の有効桁数を指定する

322 ファイルストリームをオープンする

323 ファイルストリームをクローズする

324 ファイルストリームを開けたかチェックする

325 ファイルストリームから読み込む

326 ファイルストリームへ書き出す

4-2 string

327 文字列を追加する

328 指定位置の文字を取得する

329 先頭のイテレータを取得する

330 C言語の文字列を取得する

331 文字列を比較する

332 文字列をコピーする

333 空文字列をチェックする

334 末尾のイテレータを取得する

335 指定位置の文字を削除する

336 指定した単語を検索する

337 指定した単語を末尾から検索する

338 指定したパターンを最初から検索する

339 指定したパターンにマッチしない位置を取得する

340 末尾から検索し、パターンにマッチしない位置を取得する

341 指定したパターンを末尾から検索する

342 文字列を挿入する

343 文字列の長さを取得する(1)

344 文字列の長さを取得する(2)

345 確保しているメモリ量を取得する

346 文字列の長さの無効値を示す

347 文字列が同じかチェックする

348 文字列が異なるかをチェックする

349 文字列を辞書順で前にあるかチェックする

350 文字列を辞書順で後ろにあるかチェックする

351 文字列を代入する

352 文字列を結合する

353 文字列を結合しながら代入する

354 指定位置の文字を取得する

355 先頭の逆イテレータを取得する

356 末尾の逆イテレータを取得する

357 文字列を置換する

358 使用メモリ量を変更する

359 部分文字列を取得する

360 2つの文字列を入れ替える

361 stringクラスを関数の引数で使う

362 stringクラスを関数の戻り値で使う

4-3 vector

363 配列を作成する

364 配列を初期化する

365 指定位置の要素を取得する

366 最初の要素を取得する

367 最後の要素を取得する

368 先頭のイテレータを取得する

369 末尾のイテレータを取得する

370 配列をクリアする

371 配列の一部を削除する

372 配列が空かどうかチェックする

373 配列の途中に要素を追加する

374 2つの配列が等しいかチェックする

375 2つの配列が異なるかチェックする

376 配列が小さいかチェックする

377 配列が大きいかチェックする

378 指定した位置の要素を取得する

379 末尾に要素を追加する

380 末尾の要素を削除する

381 扱える要素の最大値を取得する

382 キャパシティを取得する

383 キャパシティを設定する

384 要素数を変更する

385 先頭の逆イテレータを取得する

386 末尾の逆イテレータを取得する

387 要素の数を取得する

388 2つの配列を交換する

4-4 list

389 リストを作成する

390 先頭のイテレータを取得する

391 末尾のイテレータを取得する

392 リストをクリアする

393 リストの途中に要素を追加する

394 2つのリストをマージする

395 2つのリストが等しいかチェックする

396 2つのリストが異なるかチェックする

397 リストが小さいかチェックする

398 リストが大きいかチェックする

399 末尾に要素を追加する

400 先頭に要素を追加する

401 末尾の要素を削除する

402 先頭の要素を削除する

403 要素を削除する

404 先頭の逆イテレータを取得する

405 末尾の逆イテレータを取得する

406 要素の数を取得する

407 要素を並べ直す

408 別のリストを挿入する

409 ユニークな要素のみ残す

4-5 map

410 マップを作成する

411 マップをクリアする

412 要素の数を取得する

413 指定したキーにマッチする要素の数を取得する

414 要素を削除する

415 指定したキーを持つ範囲を返す

416 キーを指定して要素を見つける

417 要素を追加する

418 キーを検索する関数を設定する

419 2つのマップが等しいかをチェックする

420 2つのマップが異なるかをチェックする

421 マップが小さいかをチェックする

422 マップが大きいかをチェックする

423 キーを指定して値を代入する

424 検索後のイテレータを取得する

4-6 algorithm

425 別のコンテナにコピーする

426 別のコンテナに逆順でコピーする

427 イテレータを交換する

428 指定した要素ですべて設定する

429 指定した要素で数を指定して設定する

430 要素を交換する

431 範囲を指定して要素を交換する

432 コンテナから複数の要素を検索する

433 コンテナから値を検索する

434 値を指定して要素を削除する

435 条件にマッチした要素を削除する

436 コピーしながら削除する

437 条件にマッチした要素をコピーしながら削除する

438 要素を置換する

439 条件にマッチした要素を置換する

440 コピーしながら要素を置換する

441 条件にマッチした要素をコピーしながら置換する

442 ユニークな要素のみ残す

443 コピーしながらユニークな要素を残す

444 要素を回転させる

445 コピーしながら要素を回転させる

446 要素をランダムに配置する

447 特定の要素をまとめる

448 要素を逆順に並べる

449 コピーしながら要素を逆順に並べる

450 並び順を保持して要素をまとめる

451 値の大小により位置を変更する

452 要素をソートする

453 並び順を保持して要素をソートする

454 指定した要素の前のみをソートする

455 指定した要素の前のみをソートしてコピーする

456 バイナリサーチをする

457 最初にマッチした要素を返す

458 最後にマッチした要素を探す

459 値を挿入できる位置を探す

460 連続した要素を検索する

461 2つのコンテナが等しいかをチェックする

462 先頭から要素を検索する

463 末尾から部分シーケンスを検索する

464 比較関数を使って要素を検索する

465 先頭から部分シーケンスを検索する

466 2つのコンテナの異なる位置を取得する

467 コンテナをマージする(1)

468 コンテナをマージする(2)

469 指定した部分シーケンスが含まれているかをチェックする

470 2つのコンテナの異なる部分を取得する

471 2つのコンテナの重複部分を取得する

472 2つのコンテナで一方に含まれている部分を取得する

473 2つのコンテナの和を得る

474 ヒープを構築する

475 ヒープに要素を追加する

476 ヒープから要素を削除する

477 ヒープをソートする

478 大きいほうを取得する

479 コンテナの中で大きい要素を取得する

480 小さいほうを取得する

481 コンテナの中で小さい要素を取得する

482 次の順列組み合わせを取得する

483 前の順列組み合わせを取得する

484 生成関数を用いてコンテナの要素を設定する

485 生成関数を用いてコンテナを初期化する

486 関数を適用して新しいコンテナを取得する

487 値にマッチする要素数を取得する

488 比較関数を指定して要素数を取得する

489 要素を繰り返し処理する

490 2つのコンテナを辞書順で比較する

4-7 スマートポインタ

491 単一のリソースを扱う

492 ポインタを共有する

493 ポインタの値のみ扱う

第5章 通信の極意

5-1 ソケット関数

494 ソケット関数とは

495 通信ライブラリを初期化する

496 通信ライブラリの終了処理をする

497 ソケットを作成する

498 サーバーに接続する

499 ソケットを閉じる

500 ソケットをシャットダウンする

501 ソケットを選択する

502 ソケットを割り当てる

503 コネクション待ちを作成する

504 ソケットを受け付ける

505 データを送信する

506 データを受信する

507 オプションを設定する

508 オプションを取得する

509 ホスト名を取得する

510 IPアドレスを取得する

5-2 プロトコル

511 HTTPプロトコルとは

512 URLを指定してHTTPサーバーを呼び出す

513 データをHTTPサーバーに送信する

514 ヘッダ部のみHTTPサーバーから取り出す

515 範囲を指定してHTTPサーバーを呼び出す

516 SMTPサーバーの状態をチェックする

517 SMTPサーバーの接続を切断する

518 送信元のアドレスを設定する

519 送信先のアドレス設定する

520 メール本文を設定する

521 話題ごとにメールをまとめる

522 コンテンツタイプを設定する

523 base64文字列へエンコードする

524 サブジェクトをエンコードする

525 メールにファイルを添付する

526 POP3サーバーにユーザー名を指定する

527 POP3サーバーにパスワードを指定する

528 メールボックス内のメールの数を取得する

529 メールの一覧を取得する(1)

530 メールの一覧を取得する(2)

531 指定したメールの先頭だけ取得する

532 メール本文を受信する

533 サブジェクトをデコードする

534 base64文字列をデコードする

第6章 CppUnitの極意

6-1 ユニットテスト

535 CppUnitとは

536 テストフィクスチャを作成する

537 テストスイートの登録を開始する

538 テストスイートの登録を終了する

539 テストメソッドを指定する

540 テストメソッドの例外を指定する

541 テストメソッドの失敗を指定する

542 テストスイートに登録する

543 テスト開始時に実行するメソッドを記述する

544 テスト終了時に実行するメソッドを記述する

545 式を評価する

546 メッセージ付きで式を評価する

547 テストを失敗させる

548 期待値と比較する

549 メッセージ付きで期待値と比較する

550 実数で期待値と比較する

551 コマンドラインでテストを実行する

552 Windowsアプリケーションでテストを実行する

第7章 動作環境の極意

7-1 環境

553 C/C++の開発環境

554 Ubuntuでg++を使う

555 Windowsでgcc(cygwin)を使う

556 WindowsでVC++を使う

557 Windows上でLinux Subsystemを使う

558 Raspberry Pi上でg++を構築する

559 gcc makeのオプションを使う

560 nmakeのオプションを使う

コラム

C言語の歴史

C++は、JavaやC#と何が違うのか?

今、C言語の使いどころは?

関数コールとスタック

new演算子とdelete演算子に注意せよ!

アセンブラとC言語の関係

「\」に注意!

ポインタの勘所

静的型付き言語と動的型付け言語

C/C++を学ぶ利点

PR

秀和システム