首页 > 解决方案 > 由于第二个参数,我的函数并不总是有效

问题描述

我的麻烦是我的功能并不总是有效,我不知道为什么。

这是我的代码:

#include <stdio.h>
#include <string.h>
#include <cstring>
#include <iostream>
#include <math.h>
#include <stdlib.h>

#include <string>
using namespace std;


void fill_zeros(std::string& fill_zeros_str, int fill_zeros_num){
    if (fill_zeros_str.length()<fill_zeros_num){
        int i = 0;

        for (i=0;i<=((int)fill_zeros_num)-((int)fill_zeros_str.length());i++){
            fill_zeros_str = "0"+fill_zeros_str;
        }
    }
}

int main(){
    string testString = to_string(2);

    fill_zeros(testString,7);

    cout << testString << "\n";
    return 0;
}

fill_zeros 的第二个参数(fill_zeros_num)一直不起作用,我也不知道为什么。

标签: c++string

解决方案


因为在 您添加零(减一)for (i=0;i<=((int)fill_zeros_num)-((int)fill_zeros_str.length());i++) 时更改的长度fill_zeros_str ,并且您也在添加一i(因此,开始加一,结束减一)。所以最好的方法是在函数的开头定义一个长度来存储字符串的长度。


推荐阅读