C++ 如何更改此void函数,使其在特殊条件下返回生成的字符串之一?

C++ 如何更改此void函数,使其在特殊条件下返回生成的字符串之一?,c++,C++,我需要生成指定长度的给定char变量的所有可能组合,并返回与我的条件匹配的组合 因此,通过搜索,我找到了以下解决方案: #include <bits/stdc++.h> void printAllCombinations(char set[], std::string prefix, int sizeofSet, int k) { if (k == 0) { std::cout << (prefix) << std::endl;

我需要生成指定长度的给定char变量的所有可能组合,并返回与我的条件匹配的组合

因此,通过搜索,我找到了以下解决方案:

#include <bits/stdc++.h> 

void printAllCombinations(char set[], std::string prefix, int sizeofSet, int k) { 

   if (k == 0) { 
       std::cout << (prefix) << std::endl; 
       /*
            If(prefix is matched) {
                 return prefix;
            }
      */ 
       return;   
   } 

   for (int i = 0; i < sizeofSet; i++) { 
       std::string newPrefix; 
       newPrefix = prefix + set[i]; 
       printAllCombinations(set, newPrefix, sizeofSet, k - 1); 
   } 

} 

int main() {             
    char mySet[] = {'a', 'b'}; 
    int lengthOfGeneratedStrings = 2; 
    printAllCombinations(mySet, "", sizeof(mySet), lengthOfGeneratedStrings); 
}
#包括
void printAllCombinations(字符集[],标准::字符串前缀,int-sizeofSet,int-k){
如果(k==0){
std::cout您想要的是。要使用它,您只需更改几行即可

你不应该包含
#


#包括
#包括
#包括
std::string getAllCombinations(字符集[],std::字符串前缀,int-sizeofSet,int-k){
std::奥斯汀溪流;
如果(k==0){

stream您可以轻松地执行以下操作:

#include <iostream>
#include <string>
std::string returnString(const std::string &input) {
  std::string tmp{input};
  if (tmp == std::string("ghasem")) {
    return tmp;
  } else {
    return std::string("NULL");
  }
}

int main(void) {
  std::cout << returnString("ghasem") << std::endl;
  std::cout << returnString("Another")<< std::endl;
  return 0;
}

这不是。为什么要在第一种情况下创建一个临时的
std::string
?为什么要复制
input
?这似乎并不能满足要求。
#include <iostream>
#include <string>
std::string returnString(const std::string &input) {
  std::string tmp{input};
  if (tmp == std::string("ghasem")) {
    return tmp;
  } else {
    return std::string("NULL");
  }
}

int main(void) {
  std::cout << returnString("ghasem") << std::endl;
  std::cout << returnString("Another")<< std::endl;
  return 0;
}