- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要打开这种格式的文件
Dat Nguyen 77.7 88.8 99.9 11.1 22.2
Pat Nguyen 2 3 4 5 6
我需要将一行的名字分配给结构的成员数组,将行的姓氏分配给结构的另一个成员,并将行的每个编号分配给结构中的分数数组,每个新行都会到结构数组的下一个索引,做同样的事情(对不起,如果我措辞不好)。
我的名字和姓氏分配正常,但在将数字分配给结构成员时,它会跳过前三个数字。我做错了什么?
这是我的代码
void fileLoad(Gradebook *students, int &stuCount, int &assignments)
{
ifstream fin;
fin.open("Scores.txt");
if (!fin.is_open())
cout << "Failed to open file.\n";
if (stuCount < 10)
{
int n = 0;
string tempLine;
string line[10];
while (!fin.eof())
{
getline(fin, tempLine);
line[n] = tempLine;
stringstream ss(tempLine);
ss >> students[stuCount].fname >> students[stuCount].lname;
assignments = 0;
for (int i = 0; tempLine[i] != '\0'; i++)
{
ss >> students[stuCount].score[assignments];
if (tempLine[i] == ' ')
assignments++;
}
cout << line[n] << endl;
assignments--;
stuCount++;
n++;
cout << assignments << endl;
}
}
else
cout << "Already max students.\n";
}
这是输出
Dat Nguyen 77.7 88.8 99.9 11.1 22.2
Pat Nguyen 2 3 4 5 6
1. Add a new student to the class
2. Assign grades for a new assignment
3. List one student, displaying all their grades and their course average
4. List all the scores for a chosen assignment
5. Display all grades currently contained in the gradebook
6. Save the gradebook to file
7. Exit the program
Enter choice: 3
Enter a student #: 1
Dat Nguyen
Assignment 1: 11.1
Assignment 2: 22.2
Assignment 3: -9.25596e+61
Assignment 4: -9.25596e+61
Assignment 5: -9.25596e+61
Assignment 6: -9.25596e+61
Average: -5.28912e+61
最佳答案
这段逻辑值得怀疑:
for (int i = 0; tempLine[i] != '\0'; i++)
{
ss >> students[stuCount].score[assignments];
if (tempLine[i] == ' ')
assignments++;
}
这会逐一遍历 tempLine
中的所有字符,并尝试从 ss
中读取整个单词。想一想:对于每个字符,阅读一个完整的单词。 ss
包含 tempLine
的拷贝,但除此之外,它们是独立的实体。在字大小的 block 中读取 ss
并在 char
大小的 block 中读取 tempLine
,字将在循环终止之前很久就用完。由于 OP 没有测试单词的读取是否成功,因此 Crom 只知道发生了什么。
我想你想要的更像是:
while (assignments < MAX_ASSIGMENTS &&
ss >> students[stuCount].score[assignments])
{ // read all assignments until array full or couldn't read an assignment score
assignments++;
}
MAX_ASSIGMENTS
是用于调整 score
数组大小的任何 OP 的占位符。
关于C++ sstream 跳过文件中的前三个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35950000/
我正在尝试编译一个包含 C 的 graphics.h 头文件的程序。我添加了 graphics.h 和 winbgim.h 包含文件夹中的头文件以及 libbgi.a 到 lib 文件夹中。 为了测试
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
这个问题在这里已经有了答案: How to clear stringstream? [duplicate] (1 个回答) 关闭 8 年前。 我正在使用 sstream 来解析字符串。该字符串包含由
我正在解析一个包含字符串和数值的文件。我想逐个字段处理文件,每个字段由空格或行尾字符分隔。ifstream::getline() 操作仅允许单个定界字符。因此,我目前所做的是以字符 ' ' 作为分隔符
我需要打开这种格式的文件 Dat Nguyen 77.7 88.8 99.9 11.1 22.2 Pat Nguyen 2 3 4 5 6 我需要将一行的名字分配给结构的成员数组,将行的姓氏分配给结构
我正在尝试读取每行包含不同数量变量的文本文件,并使用 sstream 将正确的值设置为 vector 。 /*Example file "f 1 2 3" "f 4 5 6 7" */ ifst
因此,我的代码应该打乱句子中的单词而不改变它们在输入中出现的顺序。代码工作正常,但在输出的末尾有一个空格导致显示错误。 #include #include #include using name
cout > test; stringstream ss(test); ss >> x; while(ss.fail()) { ss.str(""); cin.clear(); cin.ignore(
这是一段代码: #include #include using namespace std; int main() { stringstream ss; string st = "2,3,
我试图通过 stringstream 将 double 变成字符串,但它不起作用。 std::string MatlabPlotter::getTimeVector( unsigned int xve
到目前为止我做了什么: 平台:Windows 7(64 位) 在 this method 之后安装了 GCC 从 link 下载 Armadillo (armadillo-6.400.3.tar.gz
这个问题显然是示例代码。很多时候,当显示std::stringstream我认为如果我需要显式添加 #include 的示例. 最佳答案 header 可能包含也可能不包含 header 。最终
我有一个 .txt 文件,里面有这样的文本(这只是一个片段): ... [332, 605]-[332, 592], srednica: 13 [324, 593]-[332, 605], sredn
在命令行中输入: 1 2 3 它存储在“行”中,我的 vector 只填充了 1 我做错了什么?这是代码 string line; string buffer; int a,b,bas
我不明白为什么 XCode 在使用时会遇到链接问题 string create_base_uri(string host, int port, string dbname){ st
在 c++ STL 库的上下文中,string::+= 或 sstream::<< 哪个性能更好,或者它取决于其他东西? 编辑:这取决于我们附加的数据大小吗? 最佳答案 它依赖于很多各种各样的参数,主
我在使用 gcc5.4.0 对大型项目运行 make 时遇到了这个错误。 /usr/include/c++/5/sstream:300:14: error: '__xfer_bufptrs' rede
我们想使用 sstream 将字符串转换为 int。 但我们不知道我们的字符串是否有整数,例如它可以是 "hello 200" 而我们想要 200 ,或者它可以是“你好” 并且没有解决方案! 当字符串
就像我有一个 stringstream 变量包含 "abc gg rrr ff" 当我在那个 stringstream 变量上使用 >> 时,它给了我 "abc"。如何获得剩余的字符串:"gg rrr
我正在尝试使用头文件sstream.h 下面是我的代码段 #include #include #include int main () { string mystr; float pr
我是一名优秀的程序员,十分优秀!