さて、私はプログラミングの初心者で、Accelerated C++ という本に飛び込むことにしました。私はまだ第 2 章に取り組んでいますが、演習に従ってみました。これは、名前を尋ねるプログラムを作成し、その周りにフレームとパディングを付けて出力するプログラムを作成するというものです。
実行すると、次の行に移動していないようです。while() ループに関係していると推測していますが、それが正確に何であるかを理解するにはあまりにも愚かです
// ask for a person's name, and greet the person
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::string;
int main()
{
// fetch name
cout << "Please enter your first name: ";
string name;
cin >> name;
// message
const string greeting = "Hello, " + name + "!";
// padding
const int pad = 1;
//desired rows/columns
const int rows = pad * 2 + 3;
const string::size_type cols = greeting.size() + pad * 2 + 2;
// seperate output from input
cout << std::endl;
// invariants
int r = 0;
string::size_type c = 0;
while (r != rows) {
while(c != cols) {
if (r == 0 || r == rows -1 || c == 0 || c == cols -1) { // if in bordering column or row
cout << "*"; //output *
} else {
if (r == pad + 1 && c == pad + 1) { //if on row for greeting
cout << greeting; // write greeting
c += greeting.size(); // adjust invariant
} else {
cout << " ";
}
}
++c;
}
++r;
cout << std::endl;
}
return 0;
}