说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

十行小程序

编辑:说三道四文库 发布时间:2018-07-19 08:10
HTML文档下载 WORD文档下载 PDF文档下载
#include <iostream>
#include <string>
using namespace std;

void main()
{
string strctrl="";
int i=0;

while (char c=cin.get()!='#')
{
strctrl[i++]=c;
}
cout<<strctrl<<endl;
}
为什么我在执行时,系统会说内存不能写???
while (char c=cin.get()!='#') //while这个c定义n次

老大这样while会循环定义同一个变量当然系统会说内存不能写!!!

你以为是for(i = 0; i<n; i++)  //for这个i只定义一次
string strctrl=""; //strctrl长度为0
strctrl[i++]=c; //因为长度为0所以strctrl[i++]就是非法的

改为
#include <iostream>
#include <string>
using namespace std;

void main()
{
string strctrl="";
cin>>strctrl;
cout<<strctrl<<endl;
}
在执行strctrl[i++]=c的时候越界了.
string strctrl="";定义一个空串那它的长度就是0了好像
void main()
{
string strctrl;
while (char c=cin.get()!='#')
{
strctrl.append(c)
}
cout<<strctrl<<endl;
}

或者

void main()
{
string strctrl;
getline(cin, strctrl, cin.widen('#'));
cout<<strctrl<<endl;
}
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘