C ++を使ってファイルの特定の列に書き込む方法は?

C ++を使用して、各行の最後に行番号を追加する必要があるファイルを生成したいとします。一部の行は13番目の文字の後に終了し、その一部は32番目の文字の後に終了します。しかし、行番号は最後にあるはずです。行の長さは80文字で、行の最後の数は行の80番目の列にある必要があります。

これを達成する方法はありますか? ofstreamを使用してファイルを初期化し、C ++を使用します。

0
あなたはC ++をまったく知っていますか?特にC ++を使用する必要がありますか?
追加された 著者 John Zwinck,
いいえ、実際にIGESコンバータを作成しています。これは、各行の最後に行番号が必要で、特定の列に特定のデータも必要です。私は誰もが理解できるように問題を最小限に抑えました。
追加された 著者 Emre Turkoz,
はい私は主に数値問題を解決するためにC + +を使用します。私は文字列の能力に慣れていません.-私はC ++で書かれているので、C ++を使う必要があります。
追加された 著者 Emre Turkoz,
これを達成するにはいくつかの方法があります。この宿題ですか?
追加された 著者 wallyk,

2 答え

さて、ここではストリングストリームを使用してそれを行う方法の1つです:

#include 
#include 
#include 

using namespace std;

int main() {
    int lineNum = 42;
    stringstream ss;
    ss << setw(80) << lineNum;
    ss.seekp(0);
    ss << "information for beginning of line";
    cout << ss.str() << endl;
    return 0;
}

基本的にストリームを右揃えにして80文字に設定し、行番号を指定して、必要なものを出力できる行の先頭に移動します。ストリームに長い行のデータを書き続けると、もちろん行番号を上書きします。

1
追加された
それは私が必要としていたものでした!ありがとうございました
追加された 著者 Emre Turkoz,

各出力ラインをパッドする:

#include 
#include 
#include 

void
pad (std::string &line, unsigned int no, unsigned int len = 80)
{
  std::ostringstream n;

  n << no;

  line.resize (len - n.str().size (), ' ');
  line += n.str();
}

int
main ()
{
  std::string s ("some line");

  pad (s, 42, 80);
  std::cout << s << std::endl;
  return 0;
}
1
追加された