Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >创建“if not an integer”if语句条件(C++)

创建“if not an integer”if语句条件(C++)
EN

Stack Overflow用户
提问于 2020-05-24 05:07:32
回答 1查看 231关注 0票数 0

处理用户以某种格式输入某些数据的任务(例如,“欧内斯特·海明威,9岁”),然后把这些信息放在一个表格里。

我必须考虑到用户输入中的错误。不要放逗号,不要放太多逗号,要检查",“后面的数据是不是有效的整数。

例如。欧内斯特·海明威9

错误:字符串中没有逗号。

欧内斯特,海明威,9岁

错误:输入中的逗号太多。

欧内斯特·海明威,九岁(输入我有问题)

错误:逗号后面没有整数。

欧内斯特·海明威,9岁

数据字符串:欧内斯特·海明威数据整数:9

下面是我当前的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    int commaCount = 0; // keeps track of commas in users input
    int currentIndex = 0; // creating variable to create elements in the vectors

    do
    {
        cout << "Enter a data point (-1 to stop input) :" << endl;
        getline(cin, userInput);

        if (userInput == "-1") { break; } // meant to break out of loop if the user inputs "-1" on their first attempt

        for (int i = 0; i < userInput.length(); i++) {
            if (userInput.at(i) == ',') {
                commaCount++;
            }
        }

        if (commaCount == 0) {
            cout << "Error: No comma in string." << endl;
        }

        else if (commaCount > 1) {
            cout << "Error: Too many commas in input." << endl;
        }

        //else if ( second half of string != a POSITIVE int) "If entry after the comma is not an integer"

        else {
        breakPoint = userInput.find(',');

        listOfAuthors.push_back(userInput.substr(0, breakPoint));
        novelsPerAuthor.push_back(stoi(userInput.substr(breakPoint + 1, userInput.length() - breakPoint + 1)));


        cout << "Data string: " << listOfAuthors.at(currentIndex) << endl;
        cout << "Data integer: " << novelsPerAuthor.at(currentIndex) << endl;
        currentIndex++;

        }

        commaCount = 0; // resets comma count between entries

        cout << " " << endl;
    } while (userInput != "-1"); //exits user input loop if "-1" is inputed

下面是我的代码,我如何分离字符串并将后半部分转换为int,如果这有助于为上面的代码提供上下文。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
breakPoint = userInput.find(',');

        listOfAuthors.push_back(userInput.substr(0, breakPoint));
        novelsPerAuthor.push_back(stoi(userInput.substr(breakPoint + 1, userInput.length() - breakPoint + 1)));

如果userInput.substr(breakPoint + 1,userInput.length() - breakPoint +1)不等于一个正整数,程序将输出"Error: Comma not not an integer“。

EN

回答 1

Stack Overflow用户

发布于 2020-05-24 05:41:38

您需要使用从std::string到整数的转换器。在C++中有几种方法可以做到这一点,但我认为使用stoi函数将涵盖所有情况(请注意,如果您尝试转换不是整数的字符串,stoi将抛出异常)。

下面是一个小示例,说明如何实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
#include <string>

std::string /* error string */ SplitLine(const std::string& inLine, std::string& outString, int& outNumber)
{
    const std::string separator = ",";
    auto pos = inLine.find(separator);
    auto pos2 = inLine.rfind(separator);

    if (pos == std::string::npos) {
        return "No comma in string.";
    }

    if (pos != pos2 && pos2 != std::string::npos) {
        return "Too many commas in input.";
    }

    outString = inLine.substr(0, pos);
    std::string remain_part = inLine.substr(pos+1);
    try {
        outNumber = stoi(remain_part);
    }
    catch (...) {
        return "Comma not followed by an integer.";
    }

    return "";
}

void ProcessLine(const std::string& inLine)
{
    std::string result;
    int num = 0;
    auto error = SplitLine(inLine, result, num);

    if (!error.empty()) {
        std::cout << "Error: " << error << std::endl;
    }
    else {
        std::cout << "Data string: " << result << " Data integer: " << num << std::endl;
    }

}

int main()
{
    ProcessLine("Ernest Hemingway 9");
    ProcessLine("Ernest, Hemingway, 9");
    ProcessLine("Ernest Hemingway, nine");
    ProcessLine("Ernest Hemingway, 9");

    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61981882

复制
相关文章
数据倾斜?Spark 3.0 AQE专治各种不服(上)
Spark3.0已经发布半年之久,这次大版本的升级主要是集中在性能优化和文档丰富上,其中46%的优化都集中在Spark SQL上,SQL优化里最引人注意的非Adaptive Query Execution莫属了。
大数据真好玩
2021/02/23
3.1K0
数据倾斜?Spark 3.0 AQE专治各种不服(上)
向后台提交数据:cookie,secur
向后台提交数据除了前端url,form表单,Ajax外还可以用cookie,secure_cookie,提交更多信息可以在用cookie基础上用session,
py3study
2020/01/17
6800
android的消息通知栏
在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等。 下面就来说说经常会使用到通知机制中的通知栏框架(Notificaiton),它适用于交互事件的通知。它是位于顶层可以展开的通知列表。它会时不时的提醒你什么软件该更新了,什么人发你微信消息了等。 (网上看了下,全面介绍的文章不多,所以就萌生了写这篇的念头,随便当作回顾笔记。下面我就通过官方文档、源代码、书上的一些
xiangzhihong
2018/01/30
4.1K0
android的消息通知栏
浅谈离线数据倾斜
在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了
京东技术
2023/08/22
5320
浅谈离线数据倾斜
Flink数据倾斜理解
数据倾斜就是数据的分布严重不均,流入部分算子的数据明显多余其他算子,造成这部分算子压力过大。
zeekling
2023/01/16
1.5K0
BigData | 一文带你搞清楚"数据倾斜"(上)
我们在用hive取数的时候,有的时候只是跑一个简单的join语句,但是却跑了很长的时间,有的时候我们会觉得是集群资源不够导致的,但是很大情况下就是出现了"数据倾斜"的情况。
Sam Gor
2019/08/21
9570
python获取天气+email通知
信息抓取来源:http://www.tianqi.com/(天气网 ) 邮件服务器(发送):126邮箱 邮件服务器(接收):QQ邮箱 代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*-  import smtplib import urllib,urllib2 import re #定义函数,发送邮件 def sendMail(body):     smtp_server = 'smtp.126.com'     from_mail = 'hzpzc68
py3study
2020/01/03
6980
python获取天气+email通知
Spark数据倾斜解决
Spark中的数据倾斜问题主要指shuffle过程中出现的数据倾斜问题,是由于不同的key对应的数据量不同导致的不同task所处理的数据量不同的问题。
五分钟学大数据
2022/10/05
8080
Spark数据倾斜解决
android获取数据_获取AndroidID需要权限
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169222.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
1.1K0
OSG加载倾斜摄影数据
ContextCapture(Smart3D)生成的倾斜摄影模型数据一般都形如如下组织结构:
charlee44
2020/05/08
3.2K0
【专题】spark/MR 数据倾斜优化
原理:在进行shuffle的时候,须将各个节点上相同的key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或join等操作。此时如果某个key对应的数据量特别大的话,就会发生数据倾斜。比如大部分key对应10条数据,但是个别key却对应了100万条数据,那么大部分task可能就只会分配到10条数据,然后1秒钟就运行完了;但是个别task可能分配到了100万数据,要运行一两个小时。因此,整个Spark作业的运行进度是由运行时间最长的那个task决定的。
艾利
2022/08/30
2K0
Android中的通知和自定义通知布局
Android中的通知(Notification)是Android中的重要一部分,应用程序通过通知来提醒用户或者向用户传达信息,下面让我们来看一下怎么在我们的程序中使用通知和自定义通知的布局。
指点
2019/01/18
3.6K0
Android中的通知和自定义通知布局
大数据常见问题:数据倾斜
一般都发生在Sql中group by和join on上,而且和数据逻辑绑定比较深。
不吃西红柿
2022/07/29
8130
大数据常见问题:数据倾斜
Android 8.0无法发送通知栏?通知栏适配通知渠道
  不得不说Andoird的通知栏相比于IOS在使用上有着明显的不足,不仅是体验上的差异,还有大量的非关注通知铺满了通知栏,导致通知栏混乱,杂多。   为什么一个很好的通知栏功能现在却变得这么遭用户讨厌?很大一部分原因都是因为开发者没有节制地使用导致的。每个开发者都只想着尽可能地去宣传自己的App,最后用户的手机就乱得跟鸡窝一样了。但是通知栏又还是有用处的,比如我们收到微信、短信等消息的时候,确实需要通知栏给我们提醒。因此分析下来,通知栏目前最大的问题就是,无法让用户对感兴趣和不感兴趣的消息进行区分。就比如说,我希望淘宝向我推送卖家发货和物流的相关消息,但是我不想收到那些打折促销或者是让我去买衣服的这类消息。那么就目前来说,是没有办法对这些消息做区分的,我要么同意接受所有消息,要么就屏蔽所有消息,这是当前通知栏的痛点。   那么在Android 8.0系统中,Google也是从这个痛点开始下手的。
饮水思源为名
2018/09/06
3.6K0
Pig对于数据倾斜Join的优化原理
2、根据样本数据,估计出某个key的所有的记录数以及所占的总内存,pig.skewedjoin.reduce.memusage 控制reduce消耗内存比例,再计算出某个key所需要的reduce个数,以及reduce的总数。
星哥玩云
2022/07/03
1920
点击加载更多

相似问题

Android -免责声明在每次意向后弹出

30

android挂起意向通知问题

50

如何通知我一部电影已被认定为非电影?

11

倾斜和扭曲电影剪辑

10

android通知意向中为什么没有发送额外的数据(整数)?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文