我有这个项目,我需要在文本文件中插入多个整数通过在循环
中获取用户输入的特定范围的输入void append_text_multiple() {
std::string file_name;
std::cin >> file_name;
std::ofstream getfile;
getfile.open(("C:\users\USER\Documents\located_file\" + file_name+ ".txt").c_str());
std::string verify_dtype;
std::cin >> verify_dtype;
if(verify_dtype == "int" || "INT") {
int total_line;
int item_append;
std::cin >> total_line;
for(int j=0; j<=total_line; j++) {
std::cin >> item_append;
getfile << item_append << 'n';
getfile.close();
}
}
}
现在,当我插入1 2 3 4 5作为我的输入,而在循环中,该文本文件的输出只返回一个值,即1,而我期望为123.45. 我不知道发生了什么事?
您的代码中有几个问题:
- 你的
for
循环做total_line+1
迭代,而不是total_line
。循环应该是for(int j=0; j<total_line; j++)
(<
而不是<=
)。 - 在写入第一个值后立即关闭输出文件。因此,不会执行后面的写操作。你应该在写完所有值后关闭它。
- 您检查
verify_dtype
值的条件是错误的,假设您想检查变量是否具有2个值中的任意一个。
固定版本:
#include <iostream>
#include <fstream>
void append_text_multiple() {
std::string file_name;
std::cin >> file_name;
std::ofstream getfile;
getfile.open(("C:\users\USER\Documents\located_file\" + file_name + ".txt").c_str());
std::string verify_dtype;
std::cin >> verify_dtype;
if ((verify_dtype == "int") || (verify_dtype == "INT")) {
int total_line;
int item_append;
std::cin >> total_line;
for (int j = 0; j < total_line; j++) {
std::cin >> item_append;
getfile << item_append << "n";
}
getfile.close();
}
}
int main() {
append_text_multiple();
}