-4

私のプログラムでは、ユーザーが int 値を入力する必要があります。入力された int 値を " " マーク内に挿入するアプリケーションが必要です。これにより、文字列値が作成され、文字列値を含む txt ファイルを保存できるようになります。

例:

ユーザー入力 int: 123 プログラムは引用符を追加します: "123" したがって、新しい文字列の値は "123" になります。

新しい文字列値を使用して、その文字列をファイル名としてファイルを保存できるようになりました。

引用符がないと、ifstream でファイルを保存できません。

前もって感謝します

4

2 に答える 2

3

あなたはそれをする必要はありません。「数値」を文字列に直接保存できます。

// read input
std::string input;
std::cin >> input;

// open output file with input as name
std::ofstream output_file(input.c_str()); // c_str() not needed in C++11

もちろん、何らかの入力検証を行うための中間ステップが必要です。

于 2013-05-27T06:31:05.693 に答える
1

ここでの引用符は、ほとんどニシンです。それらは、あなたが達成しようとしていることに対して必要でも十分でもありません。

いくつかの選択肢があります。1 つは、ユーザーの入力を算術型ではなく文字列として読み取ることです。

std::string fname;

std::cout << "Please enter integer for file name: ";
std::getline(std::cin, fname);

std::fstream file(fname);

もう 1 つは、数値を整数として入力し、それを文字列に変換する方法です。

int fnum;

std::cin >> fnum;

std::string fname = std::to_string(fnum);

std::fstream f(fname);

ファイル拡張子を追加したい可能性はかなり高いので、ユーザーが入力する123と、ファイル名は (たとえば) になり123.txtます。これを行うには、次のようなことを行うことができます: fname += ".txt";fstream オブジェクトを作成する直前。

編集:

VC++ 2012 でテストされた、完全な/コンパイル可能なデモを次に示します。

#include <string>
#include <iostream>
#include <fstream>

int main() {

    int fnum;

    std::cout << "Please enter integer for file name: ";
    std::cin >> fnum;

    std::string fname = std::to_string(fnum);

    fname += ".txt";
    std::ofstream f(fname);
    f << "Contents";
}

これを実行して (たとえば) と入力すると、 "Contents" を含む123名前のファイルが取得されます。123.txt

ほぼ同様のコードが g++ 4.7.2 でも機能しますが、(少なくとも私が持っているコピーには)std::to_stringまだ含まれていないため、その部分を操作するには簡単な書き直しが必要です。

于 2013-05-27T06:33:14.137 に答える