为什么在尝试读取数字和非数字混合输入时有些字符串会被截断,如下面的代码所示
Why are some strings cutoff when attempting to read a mixture of numeric and non-numeric input as in the following code?
程序:
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main(){
double x;
string name;
while(cin >> name){
cout<<name<<endl;
while (cin >> x);
cin.clear();
}
}
输入:Moo 100 100 100 100 100 100 100 100 100
摩尔75 85 77 59 0 85 75 89
诺曼57 78 73 66 78 70 88 89
西风43 98 96 79 100 82 97 96
爱德华兹77 72 73 80 90 93 75 90
富兰克林47 70 82 73 50 87 73 71
琼斯77 82 83 50 10 88 65 80
木匠47 90 92 73 100 87 93 91
Moo
摩尔
•
西风
病房
ranklin
琼斯
rpenter
我开始阅读这本加速c++的书,并遇到了作者的一段代码(第4章),它在我的机器上没有像预期的那样工作(上面的示例是简短的,但遇到了与直接从书中获得的代码相同的问题)。目的是打印输入中代表学生成绩的数字行开头的所有名字。实际发生的情况是,一些名字是完整打印的,而另一些名字显然是随机的,从一开始就没有字母。我希望这里有人能解释一下为什么会发生这种情况。
我最初的想法是在到达非数字输入失败的过程中:
while (cin >> x);
不知何故超过了下一个名称的开头,但我在测试时遇到了困难,我不确定为什么会发生这种情况。
更新:似乎我遇到了同样的问题与mac的clang编译器。
我只能怀疑输入来自某个文件,该文件是使用文本编辑器准备的,该编辑器在文本中插入了一些控制符号。例如,您使用的文本编辑器似乎在文本中插入了退格字符。
使用不在文本中插入任何控制符号的文本编辑器
相关文章:
- 如何修复我的最大公约数代码?它适用于除零和零以外的所有数字
- 如何优化代码以返回最接近给定整数的数字,但给定列表中不存在?
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- 无法理解代码背后的逻辑,这是在两个给定数字之间生成素数的优化问题
- 有人可以解释我这个代码吗?它给出与我们输入的数字相反
- 我怎么不能按课程代码的降序对数字进行排序
- 为什么当我在 c++ 中运行函数时,我的代码显示数字 53
- 代码以查找数组中的最大数字,但它仅将第一个数字显示为最大数字. 有人请告诉我为什么
- 为什么这个代码不适用于大数字
- 我如何在一个 if 语句中声明所有数字我尝试通过其他方式声明所有数字,如果一个接一个,但似乎代码有逻辑错误
- 下面的代码是如何工作的?它输出分解的数字并且功能齐全,我只是不明白它是如何做到的
- Cpp代码故障(显示意外数字)
- 如何让我的代码显示文件名不正确或文件中数字的平均值?
- 试图找到一个数字的平方根,但代码不起作用。C++
- 上一个较大的数字代码中的输出不正确
- 相同的数字代码返回不同的输出,无论是 C++ 还是 C
- visual c++中,没有编译器优化的数字代码会给出错误的结果
- C++字母等效数字代码的睡眠时间
- C++字母等效数字代码输出程序
- 如何获取键盘按键值(或数字/代码)