我试图创建一个在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;
的行,则会打印出该字符串。非常感谢任何帮助:)
答案 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);
我认为这是你的问题。