您的位置:首页 > 其它

string subscript out of range

2016-03-21 21:27 323 查看
刚刚练习华为机试上的题目遇到了这个问题,奉上两个小题:

//题目描述
//
//描述:
//输入一个整数,将这个整数以字符串的形式逆序输出
//程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
//
//
//输入描述 :
//输入一个int整数
//
//
//输出描述 :
//将这个整数以字符串的形式逆序输出

//
////先居然想到了用栈,因为像数制转换一样,要逆序输出,结果直接从后面取每一位输出即可。
#include<iostream>
using namespace std;
int main()
{
int input;
while (cin>>input)
{
int bit;
while (input)
{
bit = input % 10;
cout << bit;
input /= 10;
}
cout << endl;
}
return 0;
}

//题目描述
//
//写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。例如:
//
//输入描述 :
//输入N个字符
//
//
//输出描述 :
//输出该字符串反转后的字符串

#include<iostream>
#include<string>
using namespace std;
int main()
{
string str="";
while (getline(cin,str))
{
////string subscript out of range
////1.有说没有初始化的,2有说cin >> n; 后面加一句cin.ignore(); 过滤掉上一句cin中的回车 ;但是没有找到答案
//// for (int /*size_t*/ i = str.size()-1; i >=0; i--)    //发现问题,size_t为unsigned int,i=-1时,补码为正数,数组溢出 //改为int即可

//for (size_t i = str.size()-1; i >=0; i--)
//{
//    cout << str[i];  //为什么这样做就会数组大小溢出
//}
for (size_t i = str.size(); i >0; i--)  //正确
{
cout << str[i-1];
}
cout << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: