C++編で扱っている C++ は 2003年に登場した C++03
という、とても古いバージョンのものです。C++ はその後、C++11 -> C++14
-> C++17 -> C++20 -> C++23 と更新されています。
なかでも C++11 での更新は非常に大きなものであり、これから C++
の学習を始めるのなら、C++11
よりも古いバージョンを対象にするべきではありません。特に事情がないなら、新しい
C++ を学んでください。 当サイトでは、C++14 をベースにした新C++編を作成中です。
問題① 標準入力から受け取った内容を、テキストファイルへ書き出すプログラムを作成してください。細かい仕様はお任せします。
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
int main()
{
std::cout << "文字列を入力してください。" << std::endl;
std::string buf;
std::cin >> buf;
if (!std:cin) {
std::cerr << "読み込みに失敗" << std::endl;
std::exit(1);
}
std::ofstream ofs("test.txt");
if (!ofs) {
std::cerr << "ファイルオープンに失敗" << std::endl;
std::exit(1);
}
<< buf << std::endl;
ofs }
実行結果:
文字列を入力してください。
hello!!
実行結果(test.txt):
文字列を入力してください。
hello!!
標準入力からの入力は std::cin で受け取れます。文字列ならば std::string に受け取るのが安全です。あとは、std::ofstream を使って、ファイルへ書き出せばいいだけです。この辺は本編の解説どおりです。
問題② 既存のテキストファイルのコピーを作り出すプログラムを作成してください。
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
int main()
{
std::ifstream ifs("src.txt");
if (!ifs) {
std::cerr << "ファイルオープンに失敗" << std::endl;
std::exit(1);
}
std::ofstream ofs("dest.txt");
if (!ofs) {
std::cerr << "ファイルオープンに失敗" << std::endl;
std::exit(1);
}
char c;
while (ifs.get(c)) {
<< c;
ofs }
if (!ifs.eof()) {
std::cerr << "読み込みに失敗" << std::endl;
std::exit(1);
}
<< std::flush;
ofs }
入力ファイル (src.txt):
Hello, World
Hello, C++
実行結果:
実行結果(dest.txt):
Hello, World
Hello, C++
1文字ずつ読み込んで、1文字ずつ書き込んでいけば、ファイルの内容がコピーできます。
全体的に見直し修正。
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |