0埋めの連番が振ってあるファイル名を得たい
C++で,0埋めの連番が振ってあるファイル名を,stringに収めるには,iomanipを使い,stringstreamを通す.
ループしなくてもいい方法があればご教授ください.
目的
連番が振ってあるファイル名をstringに収めたい(そしてifstreamで開いて処理したい).
問題点
連番が0埋めになっている.
解決方法
#include <iostream> #include <string> #include <sstream> #include <iomanip> //setfill,setw,right using namespace std; int main() { for( int i = 1; i < 11; ++i ){ sring file_name; stringstream ss; ss << setfill('0') << setw(3) << right << to_string(i) << ".txt"; ss >> file_name; cout << file_name << endl; } //cout << resetiosflags(ios_base::floatfield); return 0; }
結果
001.txt 002.txt 003.txt 004.txt 005.txt 006.txt 007.txt 008.txt 009.txt 010.txt
説明
setfill('0')
0埋めするよ
setw(3)
0埋めの0と自分で用意した数字の合計文字数を3文字に指定するよ
right
自分で用意した数字を右に寄せるよ
to_string(i)
数値iを数字にするよ
ss << ~
上の文字列をstringstreamに流すよ
ss >> file_name
ssに流した文字列をstringに格納するよ
cout << resetiosflags(ios_base::floatfield);
setfil,setw,rightが継続してしまうので,これをしなければならないらしいが,よく分からず