我自己运行这段程序,会一直卡在这个 while 循环中无限 cin,不出来。 下面的回答中也没提到这个问题,大概率是我姿势水平不高的问题。 c++新手上路,希望各位指点迷津,谢谢。
1
GromHellscream OP |
2
clarkok 2018-02-13 22:42:34 +08:00 via Android
按 ctrl+c 可破
你需要给这个 cin 发一个 eof,才能让 cin >> words 返回的 std::istream 的 operator bool() 返回 false。我记得不是 ctrl+c 就是 ctrl+z 就是 ctrl+d |
3
GromHellscream OP <blockquote class="imgur-embed-pub" lang="en" data-id="a/BiCxT"><a href="//imgur.com/BiCxT"></a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>
|
4
GromHellscream OP |
5
GromHellscream OP 这直接产生 signal,程序无法执行下去了呀?
@clarkok |
6
GromHellscream OP SOF 那题目描述中有这么一句 “ I can store in vector and change all words to uppercase no problem.” 这代码运行起来根本不能 store strings in vector 啊!还是我想错了......
@clarkok |
7
wallriding 2018-02-13 22:58:24 +08:00
我试着回答下吧
因为你的循环条件是 cin 的返回值,就是只要你输入的是一个有效字符串,就会一直循环下去 然而我们都知道用键盘输入的肯定是有效的字符串,所以就无限 cin 所以你需要另外指定条件来跳出循环 所以:你希望读取到什么时候停止这个循环呢? 比如是 1. 读到换行符就停止? 2. 读到空行就停止? 3. 还是读取到了一定数量的词就停止? 随便选一个就行 个人觉得就选 3 就好,先读一个数字,然后再读那个数量的词 |
8
LGA1150 2018-02-13 23:04:32 +08:00
EOF
|
9
billchenchina 2018-02-13 23:05:43 +08:00 via Android
可以重定向输入到文件
Windows 的话 Ctrl-Z 也可以 |
10
GromHellscream OP @wallriding 谢谢您的回答,我自己的想法也是和您一样,是第三个想法。但是我发现 SOF 这问题下面没一个人提出这个问题的,这就挺奇怪的......
|
11
oooxxx 2018-02-13 23:07:55 +08:00 1
Unix terminal 下,可以 Ctrl-D 生成 EOF
|
12
wallriding 2018-02-13 23:11:43 +08:00
@GromHellscream #10 回答者都没 get 问题的点( cin ),都在说如何一行打印 8 个单词
|
13
GromHellscream OP @oooxxx 原来如此,谢谢。
|
14
GromHellscream OP @wallriding 是的呀,他们应该都会看一下这个题主提供的代码呀,看到 while loop 这句就没觉得有什么不对吗? 唉...... 心累。
|
15
50infivedays 2018-02-13 23:23:48 +08:00
@oooxxx #11 赞同
|
16
msg7086 2018-02-14 00:29:33 +08:00 1
EOF
Windows 下用 Ctrl-Z,Linux 下用 Ctrl-D。 |
17
secondwtq 2018-02-14 01:16:55 +08:00
这东西稍微玩一点 oj 就知道了
|
19
GromHellscream OP @msg7086 谢谢,那我去查查 Mac 上怎么操作。
|
20
CokeMine 2018-02-17 13:17:23 +08:00 via Android
一般不应该判断比如读到一个#就 break 的吗 233
|