提问人:Juan Vargas-Elvira 提问时间:5/10/2023 更新时间:5/10/2023 访问量:42
将字符行分别读取为数组并比较答案 C++
Reading lines of characters separately into arrays and comparing answers C++
问:
我做过一个项目,我只阅读 1 行 20 个字符,并将这些字符与答案键进行比较,并根据他们在文件中输入的内容输出多少是正确的,多少是错误的。我下面的代码显示了 .dat 文件中只有一行 20 个字符的外观。我想像这样做同样的事情,但有 7 行,每行 20 个字符。我不确定该写什么来分隔 7 行并将它们分别与正确答案进行比较。
char letter;
int index = 0;
while (inData >> letter) // takes the character from each array from the file
{
studentAns[index] = letter;
index++; // takes the 20 characters from the file
}
我试图在循环外部和内部添加更多变量,但输出不显示任何内容。比如这样。
# Correct | # Incorrect
-----------------------
0 | 20
-----------------------
You failed!
char letter;
char letter2;
int index = 0;
int index2 = 0;
while (inData >> letter) // takes the character from each array from the file
{
studentAns[index] = letter;
index++; // takes the 20 characters from the file
while (inData >> letter2)
{
studentAns2[index2] = letter2;
index2++;
}
}
答:
1赞
PaulMcKenzie
5/10/2023
#1
如果你能保证 7 名学生每人有 20 个问题,那么你可以使用二维数组来执行输入:char
char student[7][20];
while (int studentIndex = 0; studentIndex < 7; ++studentIndex)
{
for ( int letterIndex = 0; letterIndex < 20; ++letterIndex)
std::cin >> studentAns[studentIndex][letterIndex];
}
然后是第一个学生的第一个问题,第一个学生的第二个问题,第二个学生的第四个问题,依此类推。student[0][0]
student[0][1]
student[1][3]
0赞
ritz092
5/10/2023
#2
对于你提出的问题,我会给你一个更笼统的答案。假设您有一个包含“n”行的文件,并且每行的长度是可变的。 然后我们将借助 vector 和 getline() 函数来获得答案。
#include <iostream>
#include <fstream>
using namespace std;
int number_of_lines = 0;
int main(){
string line;
vector<string> str;
ifstream myfile("example.dat");
if(myfile.is_open()){
while(myfile.peek() != EOF){
getline(myfile,line);
str.push_back(line);
number_of_lines++;
}
myfile.close();
}
for(int i=0; i<number_of_lines; i++)
{
cout<<str[i]<<endl;
}
return 0;
}
评论
char studentAns[7][20];
studentAns
--studentAns2
-- 那么你使用这种布局的目标是什么?会是 、 、 等吗?看到模式了吗?声明一个由 7 名学生组成的数组,其中包含 20 个问题,外部索引是当前学生,内部索引是当前问题。如果这不是你的目标,那么你应该在问题中澄清你想要实现的目标。studentAns3
studentAns4
studentAns5