我真的希望得到一些帮助。 我有两个文件,一个txt文件和一个xls文件,在txt文件中它包含学生姓名及其ID的列表。在xls文件中,它包含字母和分配给它们的一些数字。 我需要为每个学生创建一个新的txt文件,其ID为文件名。在这个文件中,我需要显示分配给组成学生姓名的字母表的数字。请帮助我,真的无法在txt file xls file
的时间内弄明白到目前为止,我使用C ++做的是从txt文件中读取数据,并将xls文件转换为txt文件,并从中读取。我是否需要将数据存储在数组中,或者更容易转换为生成的文件
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream inputa("Students.txt");
ifstream inputb("Alphabet.txt");
if (!inputb.is_open()) std::cout << "Error: File Not Open" << '\n';
/* ofstream output;
output.open("output.txt");
This was just to see if it was getting anything
*/
string name;
string id;
string alphabet;
string number;
while (inputa >> name >> id || inputb >> alphabet >> number) {
/* here i planned to compare the strings using string::find, but it doesnt work */
}
system("pause");
return 0;
}
答案 0 :(得分:1)
在撰写本文时,您仍然没有给出一个包含ID和学生名称的文件的示例,因此我可能错误地订购了,但您应该明白这一点。
我只是读取字母文件,存储编码,然后一步写出所有学生文件:
#include <cstdlib>
#include <fstream>
static int encoding_map[256] = {0};
bool load_encoding(const char* file_name)
{
std::ifstream file;
file.open(file_name);
if (!file.is_open()) return false;
char from = 0;
int to = 0;
while (file >> from >> to) encoding_map[(int)from] = to;
return true;
}
bool write_student_files(const char* src_file)
{
std::ifstream file;
file.open(src_file);
if (!file.is_open()) return false;
std::string id;
std::string name;
std::ofstream outfile;
while (file >> id >> name)
{
outfile.open(id + ".txt");
for (char c : name) outfile << encoding_map[(int)c];
outfile << '\n';
outfile.close();
}
return true;
}
int main()
{
load_encoding("encoding.txt");
write_student_files("students.txt");
return EXIT_SUCCESS;
}
这是我的编码文件(字母文件),encoding.txt
:
a 1
b 2
c 3
d 4
e 5
f 6
g 7
h 8
i 9
j 10
k 11
l 12
m 13
n 14
o 15
p 16
q 17
r 18
s 19
t 20
u 21
v 22
w 23
x 24
y 25
z 26
这是我的学生档案students.txt
:
0 bob
1 susan
2 joe
3 becky
如果我使用g++ -std=c++11 main.cpp
编译代码并运行它,我会在同一目录中获得4个新文件:
0.txt
1.txt
2.txt
3.txt
例如,0.txt
的内容是:
2152
如果您愿意,可以使用空格,但是,使用我的简单编码:
b => 2
o => 15
b => 2
意思是输出正确(虽然不是很漂亮)。
显然,这并没有做太多的错误处理,也没有处理多个单词的名称等,但是你应该能够从这里找到它。