Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我应该使用哪个函数分割字符串_C++_Substr_String Parsing - Fatal编程技术网

C++ 我应该使用哪个函数分割字符串

C++ 我应该使用哪个函数分割字符串,c++,substr,string-parsing,C++,Substr,String Parsing,我正在做一个Date类,它将字符串作为参数,如下所示: 11/13/2007 9/23/2008 9/23/2008 11/13/2007 9/23/2008 9/23/2008 。。。并将其设置为月、日和年对象,我如何使用substr()函数,或者还有其他函数吗?在您的情况下,我会使用好的旧C(!)sscanf函数: 您似乎使用美国日期格式,因此我相应地设置了参数 想知道我为什么要读另外一个角色吗?它会在日期字符串的末尾捕获额外的数据,以检测无效的格式(如果后面有数据,则结果

我正在做一个
Date
类,它将
字符串
作为参数,如下所示:

11/13/2007 9/23/2008 9/23/2008 11/13/2007 9/23/2008 9/23/2008
。。。并将其设置为月、日和年对象,我如何使用
substr()
函数,或者还有其他函数吗?

在您的情况下,我会使用好的旧C(!)
sscanf
函数:

您似乎使用美国日期格式,因此我相应地设置了参数

想知道我为什么要读另外一个角色吗?它会在日期字符串的末尾捕获额外的数据,以检测无效的格式(如果后面有数据,则结果为4,否则,只读取3个值,并返回3个值)。一个缺点是:在这三个数字之前,空白被忽略,因此如果你想不允许,你需要额外的检查(例如,
%n%u“
和比较,如果两个对应的值相等)

请参阅文档(有关参数)


(如果您的输入是
::std::string
实例,您需要使用
sscanf(input.c_str(),…)

如果您使用的是c++11,您可以使用
库:

#include <iostream>
#include <regex>
#include <string>

int main() {
    std::string date = "1/1/1970";
    std::regex dateRegex("(\\d\\d?)/(\\d\\d?)/(\\d{4})");
    std::smatch match;
    if (regex_match(date, match, dateRegex)) {
        std::cout << match.str(1) << std::endl;
        std::cout << match.str(2) << std::endl;
        std::cout << match.str(3) << std::endl;
    }
    else {
        // error
    }
    return 0;
}
#包括
#包括
#包括
int main(){
std::string date=“1/1/1970”;
std::regex dateRegex(“(\\d\\d?/”(\\d\\d?/(\\d{4})”;
std::smatch匹配;
if(正则表达式匹配(日期,匹配,日期正则表达式)){

std::cout这里是您可以做的:转到VisualStudio,创建一个新项目(首选空项目),
#包括你想要的库并开始编码。继续搜索和尝试,直到成功。如果你在某个地方失败并出现明显错误,请将其发布到这里,我们将非常乐意帮助你。到目前为止,你尝试过什么吗?在这个网站和互联网上有无数的例子,你可以遵循。例如:我有准备好了。但是我不能用这个方法做任何事情,我知道substr()是如何工作的,它只需要知道它应该从哪里开始,以及它应该有多少个索引。你应该能够使用and来做这件事。“我已经做过了。”做了什么?看不到任何代码。如果你抱怨
substr
不能做你想做的事情…祝你在没有指定你想做的事情的情况下得到诊断好运。标记为不清楚你在问什么。这对于这种特殊情况来说是一种很好的技巧。@pflove,尝试使用它。只需一个补充:你得到日期已转换为数字数据!我假设这是需要的,因为问题是标记字符串解析。如果不是,请参阅Michelfrancis对问题的评论。精确定位!这将对我非常有帮助,谢谢!
#include <iostream>
#include <regex>
#include <string>

int main() {
    std::string date = "1/1/1970";
    std::regex dateRegex("(\\d\\d?)/(\\d\\d?)/(\\d{4})");
    std::smatch match;
    if (regex_match(date, match, dateRegex)) {
        std::cout << match.str(1) << std::endl;
        std::cout << match.str(2) << std::endl;
        std::cout << match.str(3) << std::endl;
    }
    else {
        // error
    }
    return 0;
}