C++ 自动在" "标记内插入整数值

C++ Automatically inserting int value within " " marks

本文关键字:插入 整数 C++      更新时间:2023-10-16

我的程序要求用户输入一个int值。我需要应用程序将输入的int值插入"标记中,这使其成为字符串值,从而使我能够使用字符串值保存txt文件。

示例:

用户输入int:123程序添加引号:"123"所以新字符串的值为:"123">

我现在可以使用新的字符串值来保存一个以该字符串作为文件名的文件。

如果没有引号,ifstream不允许我保存文件。

提前感谢

您不必这么做。您可以直接将"数字"保存为字符串:

// 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

当然,您应该有一些中间步骤来进行一些输入验证。

这里的引号几乎是在转移注意力。它们对于你想要完成的事情来说既不必要也不充分。

你有几个选择。一种是将用户的输入读取为字符串,而不是算术类型:

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的文件,其中包含"Contents"。

大致相似的代码也适用于g++4.7.2,但(至少我的副本(还不包括std::to_string,所以该部分需要简单的重写才能使用它。