C ++中的新功能,我打算在将.csv文件打开到我要创建的另一个.csv文件后,复制我在控制台上读取的值。不幸的是,它只复制最后一个值,而不是整个值。有帮助吗?非常感谢!
{{1}}
答案 0 :(得分:2)
您的方法明显存在问题:
1)在读取整个输入文件后创建输出文件,这意味着只将最后一个值写入输出文件。
2)即使您修复了1),您仍然会以错误的顺序将csv值写入输出文件。建议:逐行阅读 - >在控制台上打印线 - >将该行写入文件。
这是解决问题的简单方法(只是一个可以改进的例子):
#include <iostream>
#include <fstream>
#include <string>
int main () {
std::ifstream filetocopy("ecommerce.csv");
std::ofstream numbers("testing.csv");
std::string line;
while(std::getline(filetocopy, line)) {
std::cout << line << std::endl;
numbers << line << std::endl;
}
return 0;
}
答案 1 :(得分:0)
这里有两个问题。
首先,在您使用并丢弃大部分数据之后,才创建要输出的ofstream
。
其次,在while
循环中,您所做的只是将数据写入标准输出而不是文件。
要解决此问题,您需要在ofstream
循环之前移动while
初始化并将numbers << d << endl;
移动到循环中。
答案 2 :(得分:-2)
将您的ifstream视为旧的录像机磁带。正在使用while循环打印字符
while(filetocopy>>d){
cout << d << endl;}
你的ifstream完成了“播放”。每个循环d都会获得一个新的磁带框架并将其打印出来。所以tapehead在最后,现在d只是持有学分的最后一帧。因此,当您将其写入新的csv时,这是它留下的唯一值。
尽量不要先打印出所有这些值。