c++改错!编写一个string类,实现字符串的输入,字符串的输出及长度的输出(Code::Blocks编译) 200

#include<iostream>usingnamespacestd;#defineN100classCString{charm_iStr[N];intm_iStrLe... #include <iostream>
using namespace std;
#define N 100
class CString
{
char m_iStr[N];
int m_iStrLength;
public:
CString{};
void StrInput()
{
cout<<"请输入一个字符串:"<<endl;
cin.get(m_iStr,N);
//scanf("%[^\n]",m_iStr);
}
void StrLength()
{
int n=0;
while(m_iStr[n]!="\0")
{
m_iStrLength++;
}
cout<<m_iStrLength<<endl;
}
void StrCout()
{
cout<<m_iStr<<endl;
}
};
int main()
{
CString str1();
str1.StrInput();
str1.StrLength();
str1.StrCout();
return 0;
}
展开
 我来答
shaoqi08110820
2012-12-03 · TA获得超过2508个赞
知道大有可为答主
回答量:1514
采纳率:100%
帮助的人:1735万
展开全部
//针对你问的的问题二,不是中文符号问题,而是"\0" 这是一个字符串,但是m_iStr[n]是一个字符,所以肯定报错了。
#include <iostream>
using namespace std;
#define N 100
class CString
{
char m_iStr[N];
int m_iStrLength;
public:
CString(){m_iStrLength=0;}; //初始化
void StrInput()
{
cout<<"请输入一个字符串:"<<endl;
cin.get(m_iStr,N);
//scanf("%[^\n]",m_iStr);
}
void StrLength()
{
int n=0;
while(m_iStr[n]!='\0') //问题二
{
m_iStrLength++;
n++; //问题四
}
cout<<m_iStrLength<<endl;
}
void StrCout()
{
cout<<m_iStr<<endl;
}
};
int main()
{
CString str1; //问题三
str1.StrInput();
str1.StrLength();
str1.StrCout();
return 0;
}
kaixingui2012
2012-12-03 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6427万
展开全部
改好了,看一下注释
#include <iostream>
using namespace std;
#define N 10
class CString
{
char m_iStr[N];
int m_iStrLength;
public:
CString(){}; //少了括号
void StrInput()
{
cout<<"请输入一个字符串:"<<endl;
cin.get(m_iStr,N);
}
void StrLength()
{
int n=0;
m_iStrLength=0; //这里要先给个初值0
while(m_iStr[n]!='\0') //字符比较,单字符用单引号
{
m_iStrLength++;
n++; //这里少了n变量的变化,导致死循环了
}
cout<<m_iStrLength<<endl;
}
void StrCout()
{
cout<<m_iStr<<endl;
}
};

int main()
{
CString str1; //去掉括号
str1.StrInput();
str1.StrLength();
str1.StrCout();
return 0;
}
追问
请问你是怎么快速发现“问题二”中有标点中英格式问题的?一般这样的问题都比较难发现。
追答
查问题,要注意编译器给提供的错误信息就能很快定位
学编程的同时,要学会如何使用编译器,如何利用编译器提供的错误信息,解决程序中的语法错误!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanglixin1001
2012-12-03 · TA获得超过4174个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:880万
展开全部
修改如下:
#include <iostream>
using namespace std;
#define N 100
class CString{
char m_iStr[N];
int m_iStrLength;
public:
CString(){m_iStrLength=0;m_iStr[0]='\0';}
// 无参构造函数就初始化长度为0,字符数组只有'\0'
void StrInput()
{
cout<<"请输入一个字符串:"<<endl;
cin.get(m_iStr,N);
}
void StrLength()
{
int n=0;
m_iStrLength = 0; // 初始化,否则每调用一次,m_iStrLength都要增加,导致逻辑错误
while(m_iStr[n++]!='\0') // while中n要递增
{
m_iStrLength++;
}
cout<<m_iStrLength<<endl;
}
void StrCout()
{
cout<<m_iStr<<endl;
}
};

int main()
{
CString str1; // 使用无参构造函数构造一个空串
str1.StrInput();
str1.StrLength();
str1.StrCout();
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
正版神经病
2012-12-03 · 贡献了超过119个回答
知道答主
回答量:119
采纳率:0%
帮助的人:18.5万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式