我正在编写一个程序,对从用户输入获取的字符串执行简单的旋转(如rot13)。我的问题是我想每次更改字符串的ASCII值中的每个字符不同的数量 - 所以我使用for循环来遍历字符串,并调用每次生成随机数的函数。但是,我希望能够返回这个数字,以便我可以在以后“解读”该字符串。显然,我还需要返回字符串。
这是我的代码:
int ranFunction()
{
int number = rand() % 31;
return number;
}
string rotFunction(string words)
{
int upper_A = 65;
int lower_z = 122;
int rand_int = 0;
for (int i = 0; i < words.length(); i++)
{
rand_int = ranFunction();
if (words[i] >= upper_A && words[i] <= lower_z) {
words[i] -= rand_int;
}
}
return words;
}
我希望让rotFunction返回单词和一个基于每次rand_int的整数。
请注意:我正在使用的数字RE:ascii值等现在完全是任意的,只是用于测试。
答案 0 :(得分:3)
要返回两种不同类型,请使用std::pair<T1,T2> foo(){
return std::make_pair(v1,v2);
}
std::pair<int,float> foo(){
return std::make_pair(5,0.5f);
}
示例:
std::tuple<T1,T2,...,Tn> foo(){
return std::make_pair(v1,v2,...,Tn);
}
要返回更多而不是两种不同类型,请使用 std :: tuple :
std::tuple<int,float,std::string> foo(){
return std::make_tuple(5,0.5f,"sss");
}
示例:
protected void onActivityResult(int requestCode, int resultCode,
Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
Uri selectedImageUri = null;
Uri selectedImage;
String filePath = null;
switch (requestCode) {
case SELECT_FILE:
if (resultCode == Activity.RESULT_OK) {
selectedImage = imageReturnedIntent.getData();
if (requestCode == SELECT_FILE) {
if (selectedImage != null) {
InputStream imageStream = null;
try {
imageStream = getContentResolver().openInputStream(
selectedImage);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Bitmap bmp = BitmapFactory.decodeStream(imageStream);
imagenes.add(bmp);
imagenesUri.add(selectedImage);
adapter.notifyDataSetChanged();
}
}
}
break;
}
}
答案 1 :(得分:1)
一种简单的方法是返回struct
或class
类型。
struct rotReturn
{
int ran;
std::string str;
};
rotReturn rotFunction(std::string words)
{
// what you have, except for the return
rotReturn retval
retval.ran = rand_int;
retval.str = words;
return retval;
}
显然,可以优化和使用在函数内返回的结构,而不是为中间结果使用单独的变量。
备选方案包括返回std::pair<int, std::string>
或(更多要捆绑的值),std::tuple
。这些都是专门的struct
或class
类型。
也可以通过引用或指针(地址)将这些类型传递给函数,这样调用者就可以传递函数存储数据的对象。