C++的fstream如何实现字符串的分割并保存进不同的字符数组中

nabasasun 2013-10-06 02:39:16
分离出每行的字符串,空格是分隔符。
并分析该行哪部分是字符串哪部分是数字,那部分是字母
比如(下面是一行中3个都有)

abcd 123 我是谁
......
...



要把abcd保存进字母的字符数组中
把123保存进数字的数组中
把我是谁,保存进另外1个字符数组中
...全文
373 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
NginxL 2013-10-10
  • 打赏
  • 举报
回复
bool space(char c)
{
     return isspace(c);
     }

bool non_space(char c)
{
     return !isspace(c);
     }

vector<string> split(const string& str)
{
               typedef string::const_iterator iter;
               vector<string> ret;
               iter i=str.begin();
               while(i!=str.end())
               {
                    i=find_if(i,str.end(),non_space);
                    iter j=find_if(i,str.end(),space);
                    if(i!=str.end())
                    ret.push_back(string(i,j));
                    i=j;                                   
                                   }
               return ret;
               }
直接先用一个字符串向量保存所有结果,然后遍历字符串向量
赵4老师 2013-10-10
  • 打赏
  • 举报
回复
C++相比C,不擅长干这种活。
nabasasun 2013-10-10
  • 打赏
  • 举报
回复
都说了不要用C的方法,而是string 类
nabasasun 2013-10-09
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
fgets sscanf
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.
sscanf在游戏中也可以使用吗?
赵4老师 2013-10-08
  • 打赏
  • 举报
回复
fgets sscanf
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.
nabasasun 2013-10-08
  • 打赏
  • 举报
回复
fstream 和string 混合开发的比较好,前者读取,后者分析
max_min_ 2013-10-06
  • 打赏
  • 举报
回复
strtok函数,就是这个功能的库函数啊 分隔符为' '; 参考里面的strtok函数用法 http://blog.csdn.net/max_min_go/article/details/9292101
九桔猫 2013-10-06
  • 打赏
  • 举报
回复
根据数字和字母的ASCII判断 。。。。。
内容概要:本文围绕面向新能源容量提升的智能软开关(SOP)在配电网重构的应用展开研究,提出一种基于Matlab的优化模型实现方法。通过引入SOP这一先电力电子装置,实现对配电网拓扑结构的灵活调控,有效提升分布式新能源(如光伏、风电)的接入能力与消纳水平。研究重点在于构建以降低网络损耗、改善电压质量、提高新能源利用率为目标的配电网重构数学模型,并结合智能优化算法行求解。文详细阐述了模型构建思路、辐射状拓扑约束、潮流计算、SOP运行特性建模及求解流程,通过Matlab编程实现仿真验证,充分展示了该方法在提升配电网灵活性与新能源承载能力方面的有效性与实用价值。; 适合人群:具备电力系统分析、优化算法理论基础,熟悉Matlab编程环境,从事新能源并网、主动配电网优化、电力系统规划与运行等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握智能软开关(SOP)的工作原理、数学建模及其在配电网的灵活调控作用;② 学习并实现基于优化算法的配电网动态重构技术,以增强系统对新能源的接纳能力;③ 利用Matlab平台开展电力系统仿真分析,服务于学术研究、毕业设计或实际工程项目的技术验证与方案优化。; 阅读建议:此资源侧重于模型构建与算法实现,建议读者结合Matlab代码深入理解优化模型的建立过程与求解细节,尝试在IEEE标准测试系统(如33节点、69节点系统)上复现结果,并一步探究不同场景下SOP配置对重构效果的影响,以深化对现代配电网智能化调控技术及其在新型电力系统关键作用的理解。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧