This question already has answers here:
Why is iostream::eof inside a loop condition (i.e. `while (!stream.eof())`) considered wrong?
(4个答案)
4年前关闭。
同样,该程序为文件内容
这些是评估中的问题。我需要了解原因。当然,知道改正也会提高我的技能。但是我需要解释为什么它不能那样工作。
(4个答案)
4年前关闭。
#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;
}
这些是评估中的问题。我需要了解原因。当然,知道改正也会提高我的技能。但是我需要解释为什么它不能那样工作。
最佳答案
您首先尝试读取,然后将结果推送到vector,然后检查是否发生错误。该命令是错误的。
while (true) {
input >> hex >> i;
if (input.fail())
break;
v1.push_back(i);
}
关于c++ - 为什么此程序的结果是三个十进制数字“597、295、295”,用于输入两个十六进制数字“255 127 <enter>”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34173264/
10-09 13:23