我需要一个非常基本的c ++代码的帮助。 我的程序是关于猜测名称游戏我遇到的问题是通过char
读取字符串char#include <iostream>
#include <time.h>
#include <iomanip>
#include <stdlib.h>
#include <fstream>
#include <string>
using namespace std;
void Play(int, int,int, string[], string[]);
string GetRandomName(int, int, int , string[], string[]);
const int ArrayMax = 100;
void Play(int selection, int FArraySize, int MArraySize,string Female[], string Male[])
{
int MAX_TRIES = 3;
int i=0;
ofstream ofFile;
ifstream InFile;
int num_of_wrong_guesses=0;
char letter;
string GuessedName;
GuessedName = GetRandomName(selection, FArraySize, MArraySize, Female, Male);
cout << "Guess the following name:" << endl;
while (GuessedName[i]!= 0 ){
cout<<"?";
i++;
}
cout << "\nEnter a guess letter? or * to enter the entire name" << endl;
cin >> letter;
return;
}
我没有完成编码......
问题在于while循环如何在不使用cstring的情况下解决它? 你能救我吗?
答案 0 :(得分:1)
int i = 0;
while(GuessedName[i] != 0)
{
cout << "?";
i++;
}
好像你正在尝试打印?
的序列,并猜测字符串的长度。但是你不能将std::string
视为c-string。当其长度为n
时,GuessedName[n]
是字符串下标超出范围 - 您无法访问一个结尾的元素 - 它不是以空值终止的。用于循环:
for(int i = 0; i < GuessedName.length(); ++i)
cout << "?";
或者简单地说:
cout << std::string(GuessedName.length(), '?');
答案 1 :(得分:0)
像这样更改while循环:
while (GuessedName[i]){
cout<<"?";
i++;
}