函数中的字符串范围
Scope of string in a function
以下是我目前遇到问题的代码部分。我的功能(命名为getguess)需要能够独立进行几个猜测(我简化了这一部分,以便输入5个猜测)并形成其单个字符串输出(命名为PrevGuesses)。猜测有一个限制,因为它们必须是较低的案例字符,并且不能重复(此限制参数是在函数prevguesses内部的while循环中设置的)。当前,PrevGuesses字符串的范围是本地的,无法固定应该添加到INT主函数中for-loop的每个循环中的猜测字符。您可以忽略我的int main函数代码的开始部分,其中需要一个称为短语的输入。
#include <iostream>
#include <string>
using namespace std;
char getGuess(string prevGuesses);
int main(){
char guess;
string phrase, unsolved, prevGuesses;
cout << "Enter phrase: ";
getline(cin,phrase);
for (int i=0; i<5; i++){ // i<5 is an arbitrary parameter designed for 5 guesses
getGuess(prevGuesses);
cout << prevGuesses << endl; //this serves as a check for prevGuesses string
//currently blank for every output
}
cout << prevGuesses << endl; //also blank
//suppose to be a string of the 5 guessed characters
}
char getGuess(string prevGuesses){
char guess;
cout << "Enter a guess: ";
cin >> guess;
while ((guess < 'a') || (guess > 'z') || (prevGuesses.find(guess, 0)
<= prevGuesses.size())){
cout << "Invalid guess! Please re-enter a guess: ";
cin >> guess;
}
prevGuesses = prevGuesses + guess;
cout << prevGuesses << endl; //every output is currently the single guess character
return guess;
}
我认为您需要将prevGuesses
作为参考传递。或者,您可以使用指针。
尝试这个。
char getGuess(string &prevGuesses)
将允许调用函数实际对变量进行编辑。当前编写的方式,当您将其传递到函数中时,该变量被复制,然后将其添加到副本中,然后将其添加到范围中。
相关文章:
- C++ - 使用基于范围的 for 循环将字符值分配给向量中的字符串不会分配值
- 字符串的矢量并使用 C++20 范围进行转换
- C++ - 成功打印超出范围的字符串索引
- C++十进制到十六进制(字符串下标超出范围)
- 如何修复范围内的字符串声明错误
- C++ 字符串订阅超出范围的问题
- 在遍历字符串时,为什么我没有超出范围错误,即使我已经超出了它的长度?
- 初始检查以查看子字符串是否在范围内
- 在此范围C 中未声明字符串和char变量
- 尝试对字符串[数组]>>cin 并出现错误(" "字符串下标超出范围")
- 如何在 C++ 的字符串中打印从一个索引到另一个索引的字符范围
- C++:,当我使用字符串数组时,它的字符串下标超出了范围
- 如何将标准::字符串拆分为标准::string_views的范围 (v3)
- 为带有带前缀的字符串的容器查找相等的范围
- 为什么程序显示字符串超出范围
- 字符串订阅超出范围 - 字符串气泡排序
- 使用std :: quare_range查找字符串向量中发生的前缀范围
- 范围基于循环,使用指示字符串的指针
- 为什么在范围中未声明此字符串
- 用于匹配 C++ 范围字符串文本的正则表达式 (L "..." )