c++代码问题

头文件(jj.h)intlen(strings);//如果在上面加入#include<string>还是运行不了stringmid2(strings,inta,intb)... 头文件(jj.h)
int len(string s);//如果在上面加入#include <string>还是运行不了
string mid2(string s,int a,int b);
头文件函数声明文件(jj.cpp)
#include <iostream>
#include <string>
#include "jj.h"
using namespace std;
int len(string s)
{return (s.length());}
string mid2(string s,int a,int b)
{int i;string c;
for(i=a-1;i<=a-1+b-1;i++)
c=c+s[i];
return c;
}
主程序文件(cmain)
#include <iostream>
#include <string>
#include "jj.h"
using namespace std;
int main()
{string s;s="abcdefg";int i;
for(i=1;i<=len(s);i++)
cout<<mid2(s,i,1);
system("pause");return 0;
}
错误如下:
--------------------Configuration: c - Win32 Debug--------------------
Compiling...
cmain.cpp
e:\vc\c\jj.h(1) : error C2065: 'string' : undeclared identifier
e:\vc\c\jj.h(1) : error C2146: syntax error : missing ')' before identifier 's'
e:\vc\c\jj.h(1) : error C2059: syntax error : ')'
e:\vc\c\jj.h(2) : error C2146: syntax error : missing ';' before identifier 'mid2'
e:\vc\c\jj.h(2) : error C2501: 'string' : missing storage-class or type specifiers
e:\vc\c\jj.h(2) : fatal error C1004: unexpected end of file found
jj.cpp
e:\vc\c\jj.h(1) : error C2065: 'string' : undeclared identifier
e:\vc\c\jj.h(1) : error C2146: syntax error : missing ')' before identifier 's'
e:\vc\c\jj.h(1) : error C2059: syntax error : ')'
e:\vc\c\jj.h(2) : error C2146: syntax error : missing ';' before identifier 'mid2'
e:\vc\c\jj.h(2) : error C2501: 'string' : missing storage-class or type specifiers
e:\vc\c\jj.h(2) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
c.exe - 12 error(s), 0 warning(s)
我也找不出是什么原因,请各位c++高手们帮个忙,谢谢
展开
 我来答
百度网友f9959ba
2013-03-02 · 超过18用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:39.9万
展开全部

。。。代码没问题但是你里面的编码风格实在很差,return (s.length());改成return s.length();这样看着不是更舒服些么 ,就是里面的一些标点错误问题。

吉祥二进制
高粉答主

2013-03-02 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84581

向TA提问 私信TA
展开全部
使用多个文件进行C/C++程序设计时,弄乱了,main.cpp和jj.cpp都调用 ,有问题可以来 0x30 百度贴吧 直接发贴问,百度知道不常在,可能收不到追问消息。
//jj.h的内容
#include <iostream>
#include <string>
using namespace std;
int len(string s);
string mid2(string s, int a, int b);

//jj.cpp的内容
#include "jj.h"
int len(string s)
{return (s.length());}
string mid2(string s,int a,int b)
{int i;string c;
for(i=a-1;i<=a-1+b-1;i++)
c=c+s[i];
return c;
}

//main.cpp的内容
#include "jj.h"
int main()
{
string s="abcdefg";
int i;
for(i=1;i<=len(s);i++)
cout<<mid2(s,i,1);
system("pause");
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjfaok
2013-03-02 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1620万
展开全部
#include <string>
using std::string;
或者把所有的string手动替换成std::string……
当然如果你不打算把这个文件给别人用,也不打算重用这个文件,或者相信把std命名空间的所有变量和函数引入程序不会对程序造成任何副作用(例如使用自己写的sort函数可能会错误调用std命名空间的sort函数),写成
#include <string>
using namespace std;
也是可以解决这个问题的……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mapgis62
2013-03-02 · TA获得超过229个赞
知道答主
回答量:108
采纳率:0%
帮助的人:143万
展开全部
把using namespace std; 放进头文件中的#include <string>下面试试呢
你的头文件里也使用string,而头文件却没有声明using namespace std;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hbhecs
2013-03-02 · 超过12用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:24.8万
展开全部
在jj.h头文件中加入对iostream的引用即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式