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が継続してしまうので,これをしなければならないらしいが,よく分からず

 

参考にさせていただきました

C++ の iostream フォーマット指定早見表