#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <sstream> using namespace std;
void printer(int i) {
cout << setw(4) << i << ", "; }
int main() {
string s;
getline(cin, s);
stringstream input(s); //LINE I
vector<int> v1;
int i;
do {
input >> hex >> i;
v1.push_back(i); //LINE II
} while (!input.fail());
for_each(v1.begin(), v1.end(), printer);
return 0; }
同样,此程序会为文件内容t, r, e, e,
输出t r e
。我相信原因与上述问题非常相似。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <fstream>
using namespace std;
void printer(char c) {
cout << setw(2) << c << ", ";
}
int main ()
{
ifstream inputfile("input.txt");
vector<char> v1;
char c;
do
{
inputfile>>c;//LINE I
v1.push_back(c);
}
while (inputfile.good());//LINE II
inputfile.close();
for_each(v1.begin(), v1.end(), printer);
return 0;
}
这些是评估中的问题。我需要了解为什么。当然,了解更正也会提高我的技能。但我需要解释为什么它不起作用。
答案 0 :(得分:2)
首先尝试读取,然后将结果推送到矢量,而不是检查是否发生错误。那顺序错了。
var barData = {
labels: ['CityA', 'CityB', 'CityC', 'CityD', 'CityF', 'CityG'],
datasets: [
{
label: '2010 customers #',
fillColor: '#382765',
data: [2500, 1902, 1041, 610, 1245, 952]
},
{
label: '2014 customers #',
fillColor: '#7BC225',
data: [3104, 1689, 1318, 589, 1199, 1436]
}
]
};
答案 1 :(得分:1)
替换
do
{
inputfile>>c;//LINE I
v1.push_back(c);
}
while (inputfile.good());//LINE II
与
input >> hex >> i;
while (!input.fail()) {
v1.push_back(i); //LINE II
input >> hex >> i;
}
注意如果您的输入为空,则第二个版本也是正确的。首先检查输入,然后将其插入矢量。