文件操作,将数据传到txt文件中

输入任意多个整数, 把这些数据保存到文件data.txt中.
如果在输入的过程中, 输入错误, 则提示用户重新输入.
指导用户输入结束(按ctrl + z)
[每行最多保存10个整数]

#include<iostream>
#include<fstream>
using namespace std;
int main() {
 int count = 1;
 int num;
 ofstream stream;
 stream.open("num.txt");
 if (!stream.is_open()) {
  cout << "文件打开失败" << endl;
  exit(1);
 }
 while (1) {
  cout << "请输入第" << count << "个数据(ctrl+Z结束)" << endl;
  cin >> num;
  if (cin.eof()) {
   break;
  }
  while (cin.fail()) {
   cin.clear(); //清除错误标志
   //cin.sync();  在vs中无效
   // 把cin的输入缓冲区中的数据全部清除,直到遇到回车符
   cin.ignore(std::numeric_limits<streamsize>::max(), '\n');
   cout << "输入错误,请重新输入:";
   cin >> num;
  }
  stream << num<<"\t";
  count++;
  if (num % 10 == 0) {
   stream << endl;
  }
 }
 stream.close();
 return 0;
}

cin.ignore(count, c);

从输入流中提取并丢弃字符,直到遇到下列三种情况

1.提取的字符达到了参数count指定的数量

2.在输入序列中遇到文件结束(EOF)

3.输入序列中的下一个字符为参数c指定的字符(这个字符会被提取并丢弃)

count常常取:

std::numeric_limitsstd::streamsize::max()  相当于IO流的最大字符个数

常见用法:(把标准输入缓冲区cin的所有数据都清空)

cin.ignore(std::numeric_limits::max(), ‘\n’);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要添加以下依赖: ```xml <dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.0</version> </dependency> ``` 然后,你可以编写一个CSV文件读取器,读取CSV文件并将其转换为Java对象。代码如下: ```java public class CsvReader { public List<MyObject> readCsv(String filePath) throws IOException { FileReader fileReader = new FileReader(filePath); CSVReader csvReader = new CSVReaderBuilder(fileReader) .withSkipLines(1) .build(); List<String[]> data = csvReader.readAll(); List<MyObject> objects = new ArrayList<>(); for (String[] row : data) { MyObject object = new MyObject(); object.setField1(row[0]); object.setField2(row[1]); // set other fields objects.add(object); } return objects; } } ``` 其,`MyObject` 是你要存储到数据的Java对象。 接下来,你可以编写一个服务类,将Java对象存储到数据代码如下: ```java @Service public class MyService { @Autowired private MyRepository repository; public void saveObjects(List<MyObject> objects) { repository.saveAll(objects); } } ``` 其,`MyRepository` 是你的JPA仓库,用于将Java对象映射为数据库表。 最后,你可以编写一个Controller,将整个流程串起来。代码如下: ```java @RestController public class MyController { @Autowired private CsvReader csvReader; @Autowired private MyService service; @PostMapping("/upload") public void upload(@RequestParam("file") MultipartFile file) throws IOException { String filePath = "/tmp/" + file.getOriginalFilename(); file.transferTo(new File(filePath)); List<MyObject> objects = csvReader.readCsv(filePath); service.saveObjects(objects); } } ``` 在这个例子,我们假设你上传的CSV文件只有两列,分别是字段1和字段2。你需要根据实际情况修改代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值