首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

string类出现out of range 求帮助,怎么改正

2013-08-16 
string类出现out of range 求帮助,如何改正#includeiostream#includestring#includecctypeusing nam

string类出现out of range 求帮助,如何改正
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
void toup(string &str);
int main()
{
string str;
getline(cin,str);
while(str!="q")
{
toup(str);
cout<<str<<endl;
cout<<"Next string (q to quit):\n";
getline(cin,str);
}
system("pause");
return 0;
}
void toup(string &str)
{
cout<<str.size()<<"lenght.....";
int i=0;
while(str[i])
{
if(islower(str[i]))
str[i]=toupper(str[i]);
i++;
}
}
程序编译无错误,执行的时候,输入str后会出现out of range错误,求指导问题出在哪里?应该如何改正? String
[解决办法]
Toup函数中:
while(str[i]) 循环有问题,会越界
string并不保存字符串最后的'\0'
应该用for循环
for(int i = 0; i < str.size(); i++)
....

[解决办法]

引用:
Quote: 引用:

Toup函数中:
while(str[i]) 循环有问题,会越界
string并不保存字符串最后的'\0'
应该用for循环
for(int i = 0; i < str.size(); i++)
....
 
string是以'\0'结尾吗?如果是,为什么不行?如果不是,那是以什么结尾?

string不是'\0'结尾的,没有结尾,string内部有1个表示长度的变量来控制字符数组的大小。
str.size()就得到这个表示长度的变量。
string内部是字符数组,不是以'\0'结尾的字符串。

热点排行