我的程序要求用户输入int值。我需要应用程序在“”标记内插入输入的int值,这使它成为一个字符串值,从而使我能够保存带有字符串值的txt文件。
示例:
用户输入int:123 程序添加引号:“123” 所以新字符串的值为:“123”
我现在可以使用新的字符串值来保存带有该字符串作为文件名的文件。
没有引号ifstream不允许我保存文件。
提前致谢
答案 0 :(得分: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
当然,您应该有一些中间步骤来进行输入验证。
答案 1 :(得分:1)
这里的引号几乎是红鲱鱼。对于你想要完成的事情,它们既不必要也不充分。
你有几个选择。一种方法是将用户的输入读作字符串而不是算术类型:
std::string fname;
std::cout << "Please enter integer for file name: ";
std::getline(std::cin, fname);
std::fstream file(fname);
另一种方法是将数字作为整数输入,然后将其转换为字符串:
int fnum;
std::cin >> fnum;
std::string fname = std::to_string(fnum);
std::fstream f(fname);
您可能希望添加文件扩展名,因此如果用户输入123
,您的文件名最终会为(例如)123.txt
。为此,您可以在创建fstream对象之前执行以下操作:fname += ".txt";
。
编辑:
这是一个完整/可编译的演示,使用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";
}
运行并输入(例如)123
,我得到一个名为123.txt
的文件,其中包含“内容”。
大致相似的代码也适用于g ++ 4.7.2,但是(至少我的副本)还不包括std::to_string
,因此该部分需要进行简单的重写才能使用它。