在我提出任何问题之前,我应该提到我在C ++中拥有不稳定的基础。让我知道我是否还不清楚,我会尽力澄清。
我在这里的编码问题是读取一系列24小时制的时间值(不包括秒),并将它们存储到结构的数组中。我对此并不了解,只能以整数格式读取小时和分钟,并将其存储到结构数组中。在文本文件中,每行的第一个数字是24小时制,第二个数字是我用来修改时间的分钟数。我一开始只是阅读时间而被冻结。
这是我到目前为止的代码。This is the result of the code.
#include <iostream>
#include <fstream>
using namespace std;
int main(){
int size = 7;
int i;
struct Times {
int T;
int M;
};
Times clock[7];
ifstream infile;
infile.open("times.txt");
for (i=0; i<size; i++){
infile>>clock[i].T>>clock[i].M;
}
for (i=0; i<size; i++){
cout<<clock[i].T << " "
<<clock[i].M <<endl;
}
}
以下是文本文件的内容:
6:45 39
12:00 73
0:00 4
23:59 1
22:45 70
11:59 1
14:15 95
以下是更新的代码,它似乎可以正常工作:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
int size = 7;
int i;
char colon;
struct Times {
int hour;
int minute;
int M;
};
Times clock[7];
ifstream infile;
infile.open("times.txt");
for (i=0; i<size; i++){
infile>>clock[i].hour>>colon>>clock[i].minute>>clock[i].M;
}
for (i=0; i<size; i++){
cout<<clock[i].hour << " "
<<colon << " "
<<clock[i].minute << " "
<<clock[i].M
<<endl;
}
}
答案 0 :(得分:1)
请注意,文件的每一行都包含三个整数值,而不是两个,并且冒号将停止读取整数值(积分的格式输入将跳过前导空格和甚至换行符,但不包括“前导”字符)冒号)。如果要读取冒号后面的整数值,则需要跳过冒号。
您可以通过将冒号读入char
类型的变量(然后忽略它)来实现。代码如下:
int main()
{
int hour,minute,x;
char colon;
stringstream s { "15:43 10\n16:48 20\n" };
while (s >> hour >> colon >> minute >> x) {
cout << "H:M=" << hour << ":" << minute << "; times=" << x << std::endl;
}
}
输出:
H:M=15:43; times=10
H:M=16:48; times=20