|
>標準入力からテキストファイルを読み込み、
>行を辞書順に並べ直して標準出力に出力しなさい。
C++だとこのようになります。Cだと行の長さを制限してポインタ配列の
先にstrdup()した入力行をリンクし、qsort()でしょうね。後から時間が
あったら書いてみます。
#include <fstream>
#include <iostream>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
bool lessString(const std::string& s1, const std::string& s2)
{
return std::lexicographical_compare(s1.begin(), s1.end(), s2.begin(), s2.end());
}
int main()
{
std::ifstream ifs("input.txt");
std::vector<std::string> vs;
std::string str;
while (std::getline(ifs, str)) vs.push_back(str);
std::sort(vs.begin(), vs.end(), lessString);
std::copy(vs.begin(), vs.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
}
|