string subscript out of range

刚刚练习华为机试上的题目遇到了这个问题,奉上两个小题:

//题目描述
//
//描述:
//输入一个整数,将这个整数以字符串的形式逆序输出
//程序不考虑负数的情况,若数字含有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; }
原文地址:https://www.cnblogs.com/ranjiewen/p/5303835.html