怎么从这个 while 循环里出来? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GromHellscream
V2EX    C

怎么从这个 while 循环里出来?

  •  
  •   GromHellscream 2018-02-13 22:39:24 +08:00 3415 次点击
    这是一个创建于 2854 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原帖: https://stackoverflow.com/questions/14208069/hw-to-read-output-of-a-vectorstring-with-a-certain-number-of-words-to-a-line

    我自己运行这段程序,会一直卡在这个 while 循环中无限 cin,不出来。 下面的回答中也没提到这个问题,大概率是我姿势水平不高的问题。 c++新手上路,希望各位指点迷津,谢谢。

    20 条回复    2018-02-17 13:17:23 +08:00
    GromHellscream
        1
    GromHellscream  
    OP
       2018-02-13 22:39:55 +08:00
    clarkok
        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
    GromHellscream
        3
    GromHellscream  
    OP
       2018-02-13 22:47:39 +08:00
    <blockquote class="imgur-embed-pub" lang="en" data-id="a/BiCxT"><a href="//imgur.com/BiCxT"></a></blockquote><script async src="http://www.v2ex.com//s.imgur.com/min/embed.js" charset="utf-8"></script>
    GromHellscream
        4
    GromHellscream  
    OP
       2018-02-13 22:48:05 +08:00
    GromHellscream
        5
    GromHellscream  
    OP
       2018-02-13 22:48:49 +08:00
    这直接产生 signal,程序无法执行下去了呀?
    @clarkok
    GromHellscream
        6
    GromHellscream  
    OP
       2018-02-13 22:51:23 +08:00
    SOF 那题目描述中有这么一句 “ I can store in vector and change all words to uppercase no problem.” 这代码运行起来根本不能 store strings in vector 啊!还是我想错了......
    @clarkok
    wallriding
        7
    wallriding  
       2018-02-13 22:58:24 +08:00
    我试着回答下吧
    因为你的循环条件是 cin 的返回值,就是只要你输入的是一个有效字符串,就会一直循环下去
    然而我们都知道用键盘输入的肯定是有效的字符串,所以就无限 cin
    所以你需要另外指定条件来跳出循环

    所以:你希望读取到什么时候停止这个循环呢?
    比如是 1. 读到换行符就停止? 2. 读到空行就停止? 3. 还是读取到了一定数量的词就停止?
    随便选一个就行
    个人觉得就选 3 就好,先读一个数字,然后再读那个数量的词
    LGA1150
        8
    LGA1150  
       2018-02-13 23:04:32 +08:00
    EOF
    billchenchina
        9
    billchenchina  
       2018-02-13 23:05:43 +08:00 via Android
    可以重定向输入到文件
    Windows 的话 Ctrl-Z 也可以
    GromHellscream
        10
    GromHellscream  
    OP
       2018-02-13 23:06:43 +08:00
    @wallriding 谢谢您的回答,我自己的想法也是和您一样,是第三个想法。但是我发现 SOF 这问题下面没一个人提出这个问题的,这就挺奇怪的......
    oooxxx
        11
    oooxxx  
       2018-02-13 23:07:55 +08:00   1
    Unix terminal 下,可以 Ctrl-D 生成 EOF
    wallriding
        12
    wallriding  
       2018-02-13 23:11:43 +08:00
    @GromHellscream #10 回答者都没 get 问题的点( cin ),都在说如何一行打印 8 个单词
    GromHellscream
        13
    GromHellscream  
    OP
       2018-02-13 23:18:19 +08:00
    @oooxxx 原来如此,谢谢。
    GromHellscream
        14
    GromHellscream  
    OP
       2018-02-13 23:19:31 +08:00
    @wallriding 是的呀,他们应该都会看一下这个题主提供的代码呀,看到 while loop 这句就没觉得有什么不对吗? 唉...... 心累。
    50infivedays
        15
    50infivedays  
       2018-02-13 23:23:48 +08:00
    @oooxxx #11 赞同
    msg7086
        16
    msg7086  
       2018-02-14 00:29:33 +08:00   1
    EOF
    Windows 下用 Ctrl-Z,Linux 下用 Ctrl-D。
    secondwtq
        17
    secondwtq  
       2018-02-14 01:16:55 +08:00
    这东西稍微玩一点 oj 就知道了
    Sayhey5
        18
    Sayhey5  
       2018-02-14 11:49:58 +08:00 via Android
    @msg7086 这个正解
    GromHellscream
        19
    GromHellscream  
    OP
       2018-02-14 13:08:23 +08:00
    @msg7086 谢谢,那我去查查 Mac 上怎么操作。
    CokeMine
        20
    CokeMine  
       2018-02-17 13:17:23 +08:00 via Android
    一般不应该判断比如读到一个#就 break 的吗 233
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5052 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 05:46 PVG 13:46 LAX 21:46 JFK 00:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86