我是一名物理博士生,有一些 Java 编码经验,但我正在尝试学习 C++。
我要解决的问题是从 .txt 文件中读取数据,然后在一个文件中输出所有大于 1000 的数字,在另一个文件中输出所有小于 1000 的数字。
我需要帮助的是编写实际读取数据并将其保存到数组的代码部分。数据本身仅由空格分隔,而不是全部在新行上,这让我有点困惑,因为我不知道如何让 c++ 将每个新单词识别为 int。我已经从网上各种来源获得了一些代码-
#include <iostream>
#include <string>
#include <fstream>
#include <cstring>
#include<cmath>
using namespace std;
int hmlines(ifstream &a) {
int i=0;
string line;
while (getline(a,line)) {
cout << line << endl;
i++;
}
return i;
}
int hmwords(ifstream &a) {
int i=0;
char c;
a >> noskipws >> c;
while ((c=a.get()) && (c!=EOF)){
if (c==' ') {
i++;
}
}
return i;
}
int main()
{
int l=0;
int w=0;
string filename;
ifstream matos;
start:
cout << "Input filename- ";
cin >> filename;
matos.open(filename.c_str());
if (matos.fail()) {
goto start;
}
matos.seekg(0, ios::beg);
w = hmwords(matos);
cout << w;
/*c = hmchars(matos);*/
int RawData[w];
int n;
// Loop through the input file
while ( !matos.eof() )
{
matos>> n;
for(int i = 0; i <= w; i++)
{
RawData[n];
cout<< RawData[n];
}
}
//2nd Copied code ends here
int On = 0;
for(int j =0; j< w; j++) {
if(RawData[j] > 1000) {
On = On +1;
}
}
int OnArray [On];
int OffArray [w-On];
for(int j =0; j< w; j++) {
if(RawData[j]> 1000) {
OnArray[j] = RawData[j];
}
else {
OffArray[j] = RawData[j];
}
}
cout << "The # of lines are :" << l
<< ". The # of words are : " << w
<< "Number of T on elements is" << On;
matos.close();
}
但如果它更容易,我愿意重新开始整个事情,因为我不明白所有复制的代码在做什么。总而言之,我需要的是——
在控制台中询问文件路径 打开文件,并将每个数字(用空格分隔)存储为一维数组中的一个元素
我想我可以自己管理实际操作,如果我能让它以我需要的方式读取文件。
非常感谢