C++ 在C+;中返回字符串的最佳方式是什么+;哪里知道字符串的大小?

C++ 在C+;中返回字符串的最佳方式是什么+;哪里知道字符串的大小?,c++,string,C++,String,当我使用str[]时,我得到了类型不匹配的编译错误。当我使用str+push_back而不是str[]时,一切正常 class Solution { public: string bits(int n){ string str[32];//size already known thats why used str[32] for(long long int i=31;i>=0;i--) { if(n &

当我使用str[]时,我得到了类型不匹配的编译错误。当我使用str+push_back而不是str[]时,一切正常

   class Solution {
public:
   string bits(int n){
       string str[32];//size already known thats why used str[32]
        for(long long int i=31;i>=0;i--)
        {
            if(n & 1<<i){
                str[i]=('1');
            }else{
                str[i]=('0');
            }
            
        }
       return str;
    };
    int findMaximumXOR(vector<int>& nums) {
        queue<int>q;
        vector<string>s(nums.size());
        for(int i=0;i<nums.size();i++ ){
           s[i]=bits(nums[i]);
            cout<<s[i]<<"\n";
        }
        return 0;
    }
};
类解决方案{
公众:
字符串位(整数n){
string str[32];//大小已知这就是为什么使用str[32]
对于(长整型i=31;i>=0;i--)
{

如果(n和1)p>如果你想要一个表示32位二进制表达式的字符串,则需要一个字符串。在C++中,代码> > [/COD]在一个声明中通常指的是某个数组,如在<代码> int x[n]< /COD>中是N>代码> int 值>的数组。

返工:

字符串位(int n){
std::string str(32,'0');//保留32 x 0
对于(长整型i=31;i>=0;i--){

if(n&1
string str[32];
正在声明32个
std::string
对象的数组。但是
bits()
方法被声明为返回单个
std::string
,这就是
返回str;
不起作用的原因

您不需要32个字符串的数组。您需要一个长度为32个字符的字符串,例如:

std::字符串位(int n){
std::stringstr(32,'0');
对于(长整型i=31;i>=0;i--){

if(n&(1
stringstr[32];
是一个由32个
string
组成的数组,名为
str
。它不是一个包含32个字符的
string
std::string
为您处理内存管理。只需声明一个
std::string str;
并将其命名为day。如果您想创建具有特定大小的字符串,可以使用其他构造函数。在这种情况下,
str[i]
引用该字符串数组中的
string
#i。您最终尝试将
char
分配给
std::string
。或者只需一行:
返回std::bitset(n)。到_string()
@Slava是的,如果允许的话。这看起来像是一个作业。OP要求的是最好的方法,而不是restrictions@Slava该类的
解决方案
名称向我暗示这是一个赋值,但您的观点是有效的。如果您想在一行中预先分配,则必须在字符串中填入NUL?@tadmanmething.OP有一条关于将数组设置为32的评论,因为他们知道需要多少字符。看起来像leethaxxorchef.ru网站上的东西,所以性能很重要。如果性能很重要,用
'0'
填充它,这样你就不需要为这些做任何事情。平均来说,工作量减少了50%!看起来像是白费力气。你知道这将是浪费时间<代码>'1'
'0'
,没有歧义,所以选择一个并预先填充。然后在迭代过程中跳过它们。@tadman实际上,如果
str
填充了'0',它允许:
for(int i=31;n;i--,n>=1)str[i]=(n&1)+'0';
:)