C++ 自动在" "标记内插入整数值
C++ Automatically inserting int value within " " marks
我的程序要求用户输入一个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
,所以该部分需要简单的重写才能使用它。
相关文章:
- 在数字之间插入 + 或 - 符号以使其等于整数
- 如何将整数向量值插入字符向量
- 如果索引不是整数,我们如何在 C++ 中插入哈希表
- 如何将整数向量插入到键中,标准::映射的值
- 在控制台上输出我从文件中读取的整数,将程序插入无限循环
- 无法使用push_back将整数插入1D/2D向量
- 如何将带有前导零的整数插入到 std::string 中
- 如何在字符串中插入整数
- 将整数从文本文件插入到整数数组
- 从文件中读取,将值插入到整数和字符C++
- 如何将唯一的随机整数插入链表中
- C++ - 从整数数组中插入和提取字符
- STD上的SEG故障::设置整数插入
- C++插入到地图<双精度、多地图<整数、对象*>>
- 如果没有重复,则可以有效地将整数插入到不断增长的数组中
- 无法将整数插入多维向量
- 将整数按升序插入链表
- 在char数组中插入整数
- 在数组中插入整数
- 在字符数组中插入整数以在重命名函数中使用它