Dzwebs.Net

撰写电脑技术杂文十余年

c++实现自动在控制台输入内容并赋值给相应的变量后将输出结果保存到txt文件

Admin | 2025-10-23 21:29:23 | 被阅次数 | 7

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆
/*不管有多少行的数据,用空格分割,根据总数按照次序
实现自动在控制台输入内容并赋值给相应的变量。
*/
#include <iostream>
#include <fstream>
#include <string>
#include <sstream> // 提供istringstream
#include <vector>
using namespace std;
int main() {
  ifstream file("input.txt");
  if (!file.is_open()) {
cout << "无法打开input.txt文件!" << endl;
return 1;
  }
  // 定义存储内容的字符串变量
  string fileContent;
  // 一次性读取整个文件到字符串(无循环)
  stringstream buffer;  // 用字符串流作为中间缓冲区
  buffer << file.rdbuf();  // 读取文件全部内容到缓冲区
  fileContent = buffer.str();  // 转换为字符串并赋值给变量
  // 验证:输出变量内容(仅为演示,实际可根据需要处理变量)
  cout << "读取到的内容:" << endl;
  cout << fileContent << endl;
  file.close();
  
  //这里不管有没有换行符,系统只管按多空格获取自动输入的内容
  string input_data = fileContent;
  streambuf* original_cin_buf = cin.rdbuf(); //保存cin原来的缓冲区
  istringstream input_stream(input_data);
  cin.rdbuf(input_stream.rdbuf()); //重定向cin到字符串流
  vector<int> tree;
  int H;
  int count=0;
  int temp=0;
  for(int i=0;i<12;i++){
cin>>temp;//自动输入9个数
tree.push_back(temp);
  }
  cin>>H;//自动输入身高
  H+=30;
  for(int i=0;i<tree.size();i++){
if(H>=tree[i]){
  count+=1;
}
  }
  cin.rdbuf(original_cin_buf);//恢复cin原来的缓冲区
  cout<<"一共摘到"<<count<<"苹果"<<endl;
  
  //将cout输出重定向到output.txt文件
  freopen("output.txt", "w", stdout);
  // 接下来所有cout的内容都会写入文件
  cout<<"一共摘到"<<count<<"苹果";
  //若需要恢复控制台输出,可添加:fclose(stdout);
  fclose(stdout);
  return 0;
}

该杂文来自: 最新技术

上一篇:c++实现控制台自动输入的代码(解决摘苹果的问题)

下一篇:暂时没有文章了

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计