两串代码的目的都是为了把输入的字符串倒叙输出,下面两串代码的差异只在于第一个while循环的循环体,我以为是等效的,但是在分别运行的时候,两串代码的输入方式和输出都不太一样。
对于输入,第一串代码在输入一个字符后必须再按一下回车才能在输入下一个字符,但是第二串代码在输入的时候则不需要,可以直接输进去一个字符串。对于输出,第一串字符在输出数字的时候不是以字符的类型输出,而是按照ASCII码表转换成了别的一些字符,导致输入1-9这些数字,输出的都是空白,而第二串代码则没有这个问题
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector<char>vec;
while (1) {
if (getchar() == '\n') {
break;
}
vec.push_back(getchar());
}
vector<char>::iterator it = vec.end() - 1;
cout << "开始倒叙输出" << endl;
while (it != vec.begin()) {
cout << * it;
it--;
}
cout << *vec.begin();
return 0;
}
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector<char>vec;
while (1) {
char c = getchar();
if (c == '\n') {
break;
}
vec.push_back(c);
}
vector<char>::iterator it = vec.end() - 1;
cout << "开始倒叙输出" << endl;
while (it != vec.begin()) {
cout << *it;
it--;
}
cout << *vec.begin();
return 0;
}
我自己测试的输入以及对应的输出:
第一串:
第二串:
那为什么会出现这种差异呢?求解答