这个循环将如何结束
How this loop will ever end
再次打开编辑:如何结束这个
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<string> s;
string word;
while(cin >> word)
{
s.push_back(word);
}
for(auto i =0; i < s.size(); i++)
{
for(auto &c : s[i])
c = toupper(c);
}
int j=1;
for(auto c : s)
{
cout << c << " ";
if(j%8==0)
{
cout << "n";
}
j++;
}
}
可以使用其他方法,例如将单词 != "结束"或类似的东西放入 while 循环中,但它会创建我不想要的额外单词。
我不明白为什么当我在两个词之间给出空格时,比如,你好,我的名字是 james(在输入中),那么为什么 c++ 将它视为不同向量块中的不同字符串和 strors。如您所见,我是 c++ 编程的新手,但是一个老 C 程序员,不是很老 3 个月大,大学男生。
这是 c++ 入门第 5 版中的一个例子。我的问题 while 循环将如何结束,我尝试了一切,例如输入,输入 0这本书中有很多这样的例子。
int main()
{
vector<unsigned> scores(11, 0);
unsigned grade;
while (cin >> grade)
{
if (grade <= 100) // handle only valid grades
++scores[grade/10];
}
for(auto c : scores)
{
cout << c << endl;
}
}
如果输入操作失败,表达式 cin >> grade
将产生 false(当计算为布尔值时)。如果到达输入 (EOF) 的末尾,或者无法将其输出解析为相应类型,则会发生这种情况。由于跳过了空格,因此按回车键不会退出循环。由于零是有效的无符号数字,因此也不会触发循环退出。输入一个字母就可以完成这项工作,或者输入(特定于操作系统的)组合键来发出 EOF 信号。
表达式 (cin >> end)
有一个返回值:对象cin
。这就是允许您执行类似 cin >> x >> y
.循环结束的原因是对象cin
的布尔(真值)值等于它正在读取的输入(可能是您的终端)的状态。如果它到达输入的末尾,cin
将被评估为false
并且循环结束。
正如评论者所说,您可以在终端中使用 Ctrl-D 或 Ctrl-Z 来使cin
读取"文件结束"标记。
相关文章:
- 为什么在这个代码结束循环中没有得到结束
- 试图对缓存进行跨步测试,但程序并没有结束
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 为什么擦除方法会影响结束方法
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 删除映射和分割错误中的一个过去结束元素
- 如何使用 SFML 在贪吃蛇游戏中定义游戏结束?
- 为什么我的两个 cin 语句没有在程序结束时运行?
- 在函数结束后使用指向变量的指针是否安全?
- C ++尝试并捕获未结束的程序
- 为什么我的程序在输入某个形状的面积的测量值后没有结束?
- 取消引用结束指针到数组类型的一个
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 结束另一个线程中使用的对象的生存期
- 全局向量导致 C++ 程序结束时出现段错误
- 程序显示以退出代码 0; 结束
- 如何显示函数开始、结束行和函数体?
- C++ 从具有开始位置和结束位置的列表中删除
- 使用 shared_ptr 在中断时结束多线程循环
- 文件追加的方式是,它在每次保存C++后结束行