开发者社区> 问答> 正文

为什么这个程序打印的结果与预期结果相反?

#include <bits/stdc++.h>
using namespace std;
int main()
{
     string in_code;
     std::cin >> in_code;
     int word;
     word = in_code.find(" ");
     in_code.erase(0, (word + 1));
     cout << in_code << endl;
}

当我输入“Jhonis_a_Good_BOY”时,这个程序应该返回“is_a_Good_boy”。但上面印着“J号”。如何解决以上问题?

展开
收起
aqal5zs3gkqgc 2019-12-06 20:25:58 1076 0
1 条回答
写回答
取消 提交回答
  • 您可能应该使用getline来处理这个问题,以便捕获输入的整个行,并在使用string.find时进行验证。

    下面是注释示例。

    #include <string>
    #include <iostream>
    
    int main()
    {
        std::string in_code; //String to store user input
        std::getline(std::cin, in_code); //Get user input and store in in_code
    
        int word = in_code.find(" "); //Get position of space (if one exists) - if no space exists, word will be set to std::string::npos
        if (word != std::string::npos) //If space exists
        {
            in_code.erase(0, word + 1); //erase text before & including space
            std::cout << in_code << std::endl; 
        }
        else
        {
            std::cout << "The entered input did not contain a space." << std::endl;
        }
        return 0;
    }
    
    2019-12-06 20:26:35
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载