字符串函数返回空字符串C ++

时间:2016-03-26 00:24:58

标签: c++ string

我试图创建一个在C ++中将数字转换为二进制的函数,但只要我调用该函数,它就会返回一个空字符串。

这是我的代码:

#include <iostream>
#include <stdio.h>
#include <vector>
#include <string.h>
#include <math.h>
#include <algorithm>

using namespace std;

string dec2bin(long long x, vector<long long> extra = { }) {

    string out;
    string output;
    int i = 0;
    long long sum = 0;
    bool ok = false;

    if(!extra.empty()) {
        for(int a = 0; a < extra.end() - extra.begin(); a++) {
            sum += pow(2, extra[a]);
        }
    }

    while(pow(2, i) + sum < x) {
        i++;
    }
    if(i > 0) {
        i--;
    }
    extra.push_back(i);

    if(pow(2, i) + sum == x) {

        long long max = *max_element(extra.begin(), extra.end());

        for(int a = max; a >= 0; a--) {
            if(std::find(extra.begin(), extra.end(), a) < extra.end()) {
                out += '1';
            }
            else {
                out += '0';
            }
        }
        ok = true;
    }

    if(ok) {
        return out;
    }
    else {
        dec2bin(x, extra);
    }
}

int main() {

    long long a;
    cin >> a;

    cout << dec2bin(a) << endl;

    return 0;

}

如果我在return语句之前添加包含cout << out << endl;的行,则会打印出该字符串。非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

在其他情况下将if (key == KeyEvent.VK_ENTER) { //*********************************** se = jTextPane1.getText().toLowerCase(); String[] linea = se.split("\n"); String sent = linea[linea.length-1]; //******************************** String[] validar = sent.split(" "); if(validar[0].equals("crear") && validar[1].equals("bd")){ try { for (int i = 2; i < validar.length; i+=3){ sentencia.executeUpdate("create database "+validar[i]); jTextPane2.setText("Base de Datos "+validar[i]+" Creada"); }//for }catch (Exception ae) { jTextPane2.setText(ae.getMessage()); }//catch }//if else{ jTextPane2.setText("COMANDO MAL INGRESADO"); }//else }//ifEnter 更改为:

dec2bin(x, extra);

我认为这是你的问题。