精华内容
下载资源
问答
  • std::vector split(std::string s, std::string ... } 其他参考: https://zhuanlan.zhihu.com/p/56163976 How to split a string in C++: https://www.fluentcpp.com/2017/04/21/how-to-split-a-string-in-c/
    std::vector<std::string> split(std::string s, std::string delimiter)
    {
        std::vector<std::string> tokens;
        size_t pos = 0;
        std::string token;
        while ((pos = s.find(delimiter)) != std::string::npos) {
            token = s.substr(0, pos);
            tokens.push_back(token);
            s.erase(0, pos + delimiter.length());
        }
        if(int(s.length()) > 0)
        {
            tokens.push_back(s);
        }
        return tokens;
    }
    
    

    其他参考:
    https://zhuanlan.zhihu.com/p/56163976
    How to split a string in C++:
    https://www.fluentcpp.com/2017/04/21/how-to-split-a-string-in-c/

    展开全文
  • c语言中通常用strstok函数进行字符串分隔处理。在C++builder有专用的函数来处理。如下: TStringList* lst = new TStringList; String strSource = "0x21,0x72,0x03,0x04"; TSysCharSet Separators,WhiteSpace...

    c语言中通常用strstok函数进行字符串分隔处理。在C++builder有专用的函数来处理。如下:

    TStringList*   lst   =   new   TStringList;
    String   strSource   =  "0x21,0x72,0x03,0x04";
    TSysCharSet  Separators,WhiteSpace;
    //分隔符,可以指定多个分隔符同时使用
    Separators <<',';
    //删除每个字段中左边不必要的字符(包括空格)
    WhiteSpace <<'0'<<'x';
    ExtractStrings(Separators,WhiteSpace,strSource.c_str(),lst);
    
    Memo1->Lines = lst;
    delete lst;

    结果为:21,72,3,4

    展开全文
  • 其中一道题是“字符串分隔”,现在将通过的代码贴一下,供大家参考。 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 #...

    将之前一段时间在牛客上刷的题给大家分享一下。其中一道题是“字符串分隔”,现在将通过的代码贴一下,供大家参考。

    •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
    •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #define MAXLEN 100;
    #define SEGLEN 8;
    void output(char * inputbuf)
    {
        char newbuf[9]={0};
        int segcount = (strlen(inputbuf)-1)/8;
        int modlen = (strlen(inputbuf)-1)%8;
        int j = 0;
        for(j=0;j<segcount;j++)
        {
            strncpy(newbuf,inputbuf+j*8,8);  
            printf("%s\n",newbuf);
        } 
        if(modlen>0)
        {
           strncpy(newbuf,inputbuf+segcount*8,modlen);
           for(j=modlen;j<8;j++)
           {
              newbuf[j]='0'; 
           }
           printf("%s\n",newbuf);
        }    
        //sprintf("%")
    }
    int main()
    {
        //#define MAXLEN 100;
        char inputbuf1[102]={0};
        char inputbuf2[102]={0};
        
        int count=2;
        int i=0;
        
        //for(i=0;i<count;i++)
        //{
            fgets(inputbuf1,sizeof(inputbuf1),stdin);
           // printf(intputbuf1);
            fgets(inputbuf2,sizeof(inputbuf1),stdin);
           // printf(intputbu2);
        //}
        output(inputbuf1);
        output(inputbuf2);
    
    }

     

    展开全文
  • 发现了sstream的istringstream[1]可以将字符串类似于控制台的方式进行输入,而实质上这个行为等同于利用空格将一个字符串进行了分割,于是考虑到可以利用这个特性来实现c++库函数中没有的字符串分割函数splitstring ...

    前言

    在学习c++中string相关基本用法的时候,发现了sstream的istringstream[1]可以将字符串类似于控制台的方式进行输入,而实质上这个行为等同于利用空格将一个字符串进行了分割,于是考虑到可以利用这个特性来实现c++库函数中没有的字符串分割函数split

    string src("Avatar 123 5.2 Titanic K");

    istringstream istrStream(src); //建立src到istrStream的联系

    string s1, s2;

    int n; double d; char c;

    istrStream >> s1 >> n >> d >> s2 >> c;

    //以空格为分界的各数值则输入到了对应变量上

    实现细节

    目的是可以像js中一样,调用一个函数即可以方便地获取到处理完毕后的字符串数组,根据c++的实际情况再进行参数调整。

    1. 输入输出:

    string* split(int& length, string str, const char token = ' ')

    返回:处理完的字符串数组的首地址

    传入:字符串str、分隔符token(默认参数为空格)、以及引用参数length,指明处理完毕后动态分配的数组长度

    2. 数据透明处理:

    由于istringstream会像cin一样,把空格视为数据间的界限,所以当分隔符不是空格时,需要将传入的分隔符换为空格,并且要提前对原有空格进行数据透明处理

    字符替换利用了库algorithm中的replace() [2]

    const char SPACE = 0;

    if(token!=' ') {

    // 先把原有的空格替换为ASCII中的不可见字符

    replace(str.begin(), str.end(), ' ', SPACE);

    // 再把分隔符换位空格,交给字符串流处理

    replace(str.begin(), str.end(), token, ' ');

    }

    假设输入字符串为:"a b,c,d,e,f g"

    分隔符为非空格:','

    则被替换为:"aSPACEb c d e fSPACEg"

    3. 数据分割:

    //实例化一个字符串输入流,输入参数即待处理字符串

    istringstream i_stream(str);

    //将length置零

    length = 0;

    queue q;

    //用一个string实例s接收输入流传入的数据,入队并计数

    string s;

    while (i_stream>>s) {

    q.push(s);

    length++;

    }

    4. 数组生成:

    //根据计数结果动态开辟一个字符串数组空间

    string* results = new string[length];

    //将队列中的数据转入数组中

    for (int i = 0; i < length; i++) {

    results[i] = q.front();

    //将替换掉的空格进行还原

    if(token!=' ') replace(results[i].begin(), results[i].end(), SPACE, ' ');

    q.pop();

    }

    完整代码

    #include

    #include

    #include

    #include

    #include

    using namespace std;

    string* split(int& length, string str,const char token = ' ') {

    const char SPACE = 0;

    if(token!=' ') {

    replace(str.begin(), str.end(), ' ', SPACE);

    replace(str.begin(), str.end(), token, ' ');

    }

    istringstream i_stream(str);

    queue q;

    length = 0;

    string s;

    while (i_stream>>s) {

    q.push(s);

    length++;

    }

    string* results = new string[length];

    for (int i = 0; i < length; i++) {

    results[i] = q.front();

    q.pop();

    if(token!=' ') replace(results[i].begin(), results[i].end(), SPACE, ' ');

    }

    return results;

    }

    //测试:

    int main() {

    int length;

    string* results = split(length, "a b,c,d,e,f g", ',');

    for (int i = 0; i < length; i++) cout<

    return 0;

    }

    参考

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

    展开全文
  • C++如何做字符串分割(5种方法)

    千次阅读 2021-04-06 16:56:05
    参数说明:str为要分解的字符串,delim为分隔字符串。 返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。 其它:strtok函数线程不安全,可以使用strtok_r替代。 示例: //借助strtok实现...
  • C++分割字符串

    2021-06-01 14:45:03
    C++ string类中,提供了两个成员函数可以用来实现字符串分割,一个是find函数,另一个是substr函数,下面看一下这两个函数的声明。 find函数: 原型: size_t find (const string& str, size_t pos = 0) const;...
  • HJ4 字符串分隔 #include<bits/stdc++.h> using namespace std; int main() { string str = ""; while(cin >> str) { string ans = ""; for(int ii = 0; ii < str.size(); ii += 8) { if(ii +...
  • C++ 带空格字符串的输入与分割

    千次阅读 2021-03-15 22:37:12
    C++中,常用的输入方式cin默认的分隔符非常多,其中就包括空格,所以不能直接用cin输入带空格的字符串,不然会被系统自动分成好几个字符串。正确输入带空格的字符串的方法如下: 使用getline函数 对于字符数组,...
  • C++输入以空格分割的字符串

    千次阅读 2021-06-18 11:40:10
    C++输入以空格分割的字符串 昨天vivo提前批笔试,败在了输入输出处理上面,真是给自己菜吐了。 题目要求处理的输入是:一个未知长度的数组以字符串的形式展示,并且每两个数中间以空格分割。给个例子: 123 234 234 ...
  • 示例1:从string中提取整型数字,从而实现了以空格为分隔符的数字提取 #include <iostream> #include<sstream> #include<string> using namespace std; template<class T> inline T from...
  • C++ 分割字符串(包括含有连续分隔符) 网上很多教程都是分割字符串,但是不能正确分割含有连续分隔符得字符串,比如分割:" I u0 fdfsdf fdsdaas q.qwwqe 3213 3213 ^^ ^ ",里面有多个连续空格,正确分割后如下:...
  • 字符串去除分隔

    2021-03-09 15:17:16
    是一个字符串常量,存储在常量区,常量区存储的东西是不能够被修改的。 使用string来实现: std::string strConvertor(asciiData); strConvertor.erase(remove_if(strConvertor.begin(), strConvertor.end(), []...
  • 对不起,我的C/C++不太好,但是下面的代码对我来说也是...我知道这是C-ISH代码,但拆分字符串不会那么复杂!坚持相同的签名,不使用额外的库,我如何改进它-使它简短和甜蜜?我可以看出这段代码很难闻,例如,在结尾...
  • s为要分解的字符串,delim为分隔字符串。描述:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时 则会将该...
  • //头文件#include #include //-------------获取按ch分割的子字符串--------------------------std::vector split(char* pStr, char ch){std::vector vec;if (nullptr == pStr)return vec;std::string strStr(pStr);...
  • 1. 流和缓存; 2. 标准输入和输出流; 3. 字符输入和输出; 4. 字符串输入和输出; 5. 格式化输入和输出; 6. string class 输入; 7. 文件输入和输出;
  • if (m_strSqlit.IsEmpty()) { MessageBox("分割字符串不能为空"); return; } CStringArray strDestArray; StringSplit(m_strSource, strDestArray, m_strSqlit); for (size_t i = 0; i (); i++) { const CString& ...
  • c++字符串基础

    2021-07-23 20:00:51
    主要总结了字符串的一些输入,并带来了string类: 对于标准的输入输出,基本输入原则 输入数值型数据,输入可以采用,空格,回车,tab作为分隔符。当编译器遇到他们时会认为输入结束。 输入字符型数据,在scanf中...
  • C/C++分割字符串strtok

    2021-09-14 16:49:35
    C/C++分割字符串需要自己实现,秋招笔试被处理输入的字符串耽误了几次。。。 #include <iostream> #include <string.h> #include <vector> #include "stdio.h" using namespace std; int main ()...
  • //寻找空格在字符串s中的位置 if (loc == string::npos) { //没有找到空格,说明到了最后一个位置 numbers.push_back(stoi(s)); s.clear(); break; //清除字符串s并退出循环 } string s_tmp = s....
  • C++ string字符串分割

    千次阅读 2021-02-04 14:07:44
    C++ string字符串分割一、find()配合substr()二、使用strtok()函数总结 一、find()配合substr()     第一种办法是先通过find()函数查询到子字符串的位置,而后通过substr进行子字符串截取。 &...
  • 本文实例汇总了C++常用字符串分割方法,分享给大家供大家参考。具体分析如下:我们在编程的时候经常会碰到字符串分割的问题,这里总结下,也方便我们以后查询使用。一、用strtok函数进行字符串分割原型: char *...
  • 简单的说,“##”是一种分隔连接方式,它的作用是先分隔,然后进行强制连接。其中,分隔的作用类似于空格。我们知道在普通的宏定义中,预处理器一般把空格解释成分段标志,对于每一段和前面比较,相同的就被替换。...
  • void SplitStringByChar(std::string strValue, std::vector<std::string>& strResult, char ch) { strResult.clear(); std::string token; stringstream sstr(strValue);... while (getline(sstr, token,...
  • C/C++文件字符串解析

    2021-07-25 01:19:47
    文章目录目的C++打开文件C++读取字符串字符串处理 目的 我们需要解析DNS配置文件,该文件有时第一行、第二行是DNS地址,有时第三、第四行是DNS地址,并且格式不是完全固定,我们如何从该文件中获取到正确的DNS地址呢...
  • 字符串字面量可能经常会在工作中用到,特别是写UT的时候。 想象一下如下场景: 一个程序,我们想要输入如下的内容: std::string normal_str = "First line.\nSecond line.\nEnd of message.\n"; 为何...
  • LUA并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是LUA可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,LUA...习惯了其他语言的字符串分割函数,与是就自己写了一个,...
  • while 那里会循环11次,每读入一次就是读入一行/以空格分隔的一个字符串; 将同一根目录下文件名为movie_information.txt的文件打开,将里面的内容一行行赋值给in后的变量。 //读入信息 ifstream in("movie_...
  • C++字符串操作库函数

    2021-10-16 16:41:57
    字符串操作库函数: char * strchr(const char * str,int c); 寻找字符c在字符串str中第一次出现的位置。如果找到,就返回指向该位置的char*指针;如果str中不包含字符c,则返回NULL char * strstr(const char * ...
  • 在最开始学习C++的时候,当想让计算机“读点儿东西”,我们...接下来将讲解一下关于读取字符、字符串的方法。1. cin简介首先我们先了解下cin到底是什么?它的机制是什么?cin是C++编程语言中的标准输入流对象,即ist...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,845
精华内容 25,138
关键字:

c++字符串分隔

c++ 订阅
友情链接: ARRAY.rar