使用c++读取文件
Reading in file using C++
这是2008年Google代码堵塞的一个问题https://code.google.com/codejam/contest/32016/dashboard
问题的语句被复制:
给你两个向量v1 = (x1, x2,…,xn)和v2 = (y1, y2,…,yn)。这些向量的标量积是一个单独的数,计算为x1y1+x2y2+…+xnyn。
假设你可以随心所欲地排列每个向量的坐标。选择两个排列,使你的两个新向量的标量积是最小的,并输出这个最小的标量积。
输入输入文件的第一行包含整数T——测试用例的数量。对于每个测试用例,第一行包含整数n。接下来的两行各包含n个整数,分别给出v1和v2的坐标。
输出对于每个测试用例,输出一行Case #X: Y其中X为从1开始的测试用例编号,Y为两个给定向量的所有排列的最小标量积。
和我复制粘贴了Bohua的解决方案,并附上
ifstream in ("A-small-practice.in");
ofstream out("A-small-practice.out");
,结果如下:
#include <vector>
#include <algorithm>
#include <fstream>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main()
{
ifstream in ("A-small-practice.in");
ofstream out("A-small-practice.out");
int numCase;
cin >> numCase;
int i, j, n;
long long c;
for (i = 0; i < numCase; i++)
{
cin >> n;
vector<long long> array1, array2;
for (j = 0; j < n; j++)
{
cin >> c;
array1.push_back(c);
}
for (j = 0; j < n; j++)
{
cin >> c;
array2.push_back(c);
}
sort(array1.begin(), array1.end());
sort(array2.begin(), array2.end(), greater<long long>());
long long ans = 0;
for (j = 0; j < n; j++)
ans += (array1[j] * array2[j]);
cout << "Case #" << (i+1) << ": " << ans << endl;
}
return 0;
}
然而,它没有产生我想要的输出。做法虽小。Out只是一片空白。我插入
的方式有问题吗?ifstream in ("A-small-practice.in");
ofstream out("A-small-practice.out");
我想让c++读A-small-practice。在文件中,并产生一个小实践。输出文件,代码必须是正确的,因为我所做的只是复制&粘贴博华的解决方案,除了增加以上两行。
我只是想学习如何加载。in扩展文件到c++中,并产生期望的输出。
p。我明白了
不要写入名为"A-small-practice.out"的文件。Cin和cout从命令行或终端写入和读取。
你使用ifstream和ofstream打开了2个文件。您可以在代码中使用名称in
和out
来引用这些对象。
尝试做一些像out << "Send text to file" << endl;
因为out
是一个ofstream
类型,你可以输出数据给它。这是使用流插入操作符完成的:<<
例如,您可能想要执行out << "Case #" << (i+1) << ": " << ans << endl;
之类的操作。(我不确定你的程序应该做什么,因为没有注释或解释)
代替cin >> numCase;
行,试试这样:
in >> numCase;
out << "Number of cases = " << numCase << std::endl;
这至少应该打印一些到A-small-practice.out。如果它打印出Number of cases = 0
,那么我们就知道你的输入有问题(也就是说,至少输入文件不包含与你的输入逻辑试图读取的相同的数据)。
一旦您确定了输入逻辑设置numCase
的值,您就可以删除输出"Number of cases = "
的行(因为它不是程序所需输出的一部分)。
如果你在那行输出中看到0
以外的内容,那么我们可以查看循环内部的内容。但是由于您现在什么也没看到,因此有必要检查一下程序是否实际上在做任何事情。如果输入逻辑设置了numCase = 0
,则程序的其余部分被设计为不打印任何内容。
- 正在将csv文件读取为双精度矢量
- 将从格式化文本文件读取的文本数据存储到链表
- C++ 读取文件读取文件不正确
- 使用对象文件读取三角形数据网格
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 从文件读取,并写入函数C++中的数组
- 从对象C++中的文件读取内容时出现分段错误
- 从文件读取并通过矢量输出到控制台
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 简化文件读取的函数
- 如何将逗号分隔的文件读取为 2D int 数组?
- 在 c++ 中将数据从文件读取到队列中
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 文件读取C++包括空格键
- 从文件读取时未将值推回矢量
- 从文件 C++ 读取时的无限循环
- 从同一文件读取和写入?
- 从.txt文件读取到C++中的双精度向量