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;
} 展开
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;
} 展开
展开全部
//针对你问的的问题二,不是中文符号问题,而是"\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;
}
#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;
}
展开全部
改好了,看一下注释
#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;
}
#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;
}
追问
请问你是怎么快速发现“问题二”中有标点中英格式问题的?一般这样的问题都比较难发现。
追答
查问题,要注意编译器给提供的错误信息就能很快定位
学编程的同时,要学会如何使用编译器,如何利用编译器提供的错误信息,解决程序中的语法错误!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
修改如下:
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
无
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询