文字列にintを取得するためにstringstreamsを使用しようとしています。私はこのようにします:
std::string const DilbertImage::startUrl = "http://tjanster.idg.se/dilbertimages/dil";
std::string const DilbertImage::endUrl = ".gif";
DilbertImage::DilbertImage(int d)
{
cal.setDate(d);
int year, month, date;
year = cal.getYear();
month = cal.getMonth();
date = cal.getNumDate();
std::stringstream ss;
ss << year << "/";
if(month < 10)
{
ss << 0;
}
ss << month << "/" << "Dilbert - " << cal.getNumDate() << ".gif";
filePath = ss.str();
ss.str("");
ss.clear();
ss << startUrl << date << endUrl;
url = ss.str();
std::cout << url << '\t' << filePath << std::endl;
}
次のような 2 つの素敵な文字列が得られることを期待しています。
url: http://tjanster.idg.se/dilbertimages/dil20060720.gif
filePath: /2006/07/Dilbert - 20060720.gif
しかし、代わりに、文字列ストリームにintを入れると、どういうわけかスペース(またはそれらの途中に挿入された他の空白文字)が得られます。コンソールウィンドウから貼り付けると、文字は*として表示されます。
最終的には次のようになります。
url: http://tjanster.idg.se/dilbertimages/dil20*060*720.gif
filepath: /2*006/07/Dilbert - 20*060*720.gif
なぜこうなった?
プロジェクト全体は次のとおりです。http://pastebin.com/20KF2dNL