您可以將您的字母創建爲std::string
陣列。爲了一致性,它是五個字符串,長度爲五個字符。您可以使用像get_font_letter
這樣的功能來選擇當前字母。有更好的方法來做到這一點,但如果你只關心這個詞,那麼現在應該沒問題。我建議你做一些類似於「字體數據庫」的地方,你可以在文本文件中繪製和索引這些字母。
#include <iostream>
#include <vector>
std::string f[] = {
"FFFFF",
"F ",
"FFF ",
"F ",
"F ",
};
std::string r[] = {
"RRRRR",
"R R",
"RRRR ",
"RRR ",
"R RR",
};
std::string e[] = {
"EEEEE",
"E ",
"EEE ",
"E ",
"EEEEE",
};
std::string* get_font_letter(const char& c)
{
if (c == 'F') return f;
if (c == 'R') return r;
if (c == 'E') return e;
}
您不需要二維std::vector
。您可以將每行連同一個空格拼成一塊。
int main()
{
std::string word = "FREE";
std::vector<std::string> v;
v.resize(5);
for (unsigned int i = 0; i < 5; i++)
{
std::string row = "";
for (auto it = word.begin(); it != word.end(); ++it)
{
auto letter = get_font_letter(*it);
row += letter[i] + " ";
}
v.push_back(row);
}
for (auto it = v.begin(); it != v.end(); ++it)
std::cout << *it << "\n";
}
輸出:
FFFFF RRRRR EEEEE EEEEE
F R R E E
FFF RRRR EEE EEE
F RRR E E
F R RR EEEEE EEEEE
你想打印彼此相鄰的行,而不是一個接一個地打印?這將是一個問題,因爲控制檯窗口很小。 – 2014-02-14 01:49:22