You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++按空格拆分输入行时无法向string类型vector push_back元素问题

代码错误原因说明
  • 第一个错误:std::cin >> command的读取规则问题。C++中使用>>运算符从输入流读取字符串时,默认会以任意空白字符(空格、换行、制表符等)作为分隔符,读取到第一个空白字符就会停止读取,同时丢弃该空白字符。所以你输入foo bar时,command变量最终仅存储了foo,完全没有读取到后续的空格和bar内容,因此你遍历command的循环里根本找不到空格字符,command_seperated的push_back逻辑永远不会被触发,最终vector为空,最后一个遍历输出的循环自然没有内容。你观察到程序似乎遇到第一个空格就停止运行,本质就是command仅包含foo,循环只执行3次就结束了,没有后续内容可以处理。
  • 第二个错误:空格处理逻辑存在漏洞。假设后续你修改了输入读取逻辑能拿到完整带空格的输入,你当前的空格判断逻辑也有问题:当检测到当前字符是空格时,你将command_temp存入vector并清空,但后续代码仍会执行command_temp.push_back(command[i]),会把空格字符存入下一个字符串的开头,导致拆分出来的字符串开头多出来不必要的空格。
  • 第三个错误:末尾单词遗漏问题。即便你修复了上述两个问题,当前逻辑也只能在遇到空格的时候触发前一个单词的存入操作,当遍历到输入字符串末尾时,最后一个单词后面没有空格触发存入逻辑,会导致最后一个单词永远不会被存入command_seperated中。

内容的提问来源于stack exchange,提问作者baguettio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:18:03