gpt4 book ai didi

c++ - 一次输入一行到c++中的字符串数组

转载 作者:行者123 更新时间:2023-11-28 05:56:39 25 4
gpt4 key购买 nike

这里是编程和 Stackoverflow 的新手。只是有一个关于编程类刽子手程序的一部分的问题。

为了尽早开始,我必须手动硬编码答案并将其设置为随机选择一个,如下所示:

srand(time(NULL));
string Phrases[3] = {"evan almighty","the hunger games","click"};
string SecretWord = Phrases[rand()%3];

我正在尝试使用 txt 文件作为修改答案列表的更简单方法,而不是弄乱我的主要代码(按照我的教授的建议)。

因此,有人建议我使用 getline 和一个循环:

string Phrases[10];
ifstream fin("hangman.txt");
for (int x=0; x<10; x++)
{
getline (fin, Phrases[x]);
}
string SecretWord = Phrases[rand()%10]

它工作正常,但我想知道是否有任何方法可以避免对答案/短语的总数进行硬编码。

这一切都是在 CodeBlocks 中完成的,使用 int main() 并返回 0,仅用于上下文。

谢谢!

最佳答案

动态内存分配

假设我们的数组是一个int array[3]
你说你想要操作系统的内存大小为 3*sizeof(int) 你在运行时之前确定数组的大小。
在此示例中,您在编译时确定数组大小:

#include <iostream>
#include <new>
using namespace std;

int main ()
{
int i,n;
int * p;
cout << "How many numbers would you like to type? ";
cin >> i;
p= new (nothrow) int[i];
if (p == nullptr)
cout << "Error: memory could not be allocated";
else
{
for (n=0; n<i; n++)
{
cout << "Enter number: ";
cin >> p[n];
}
cout << "You have entered: ";
for (n=0; n<i; n++)
cout << p[n] << ", ";
delete[] p;
}
return 0;
}

输出:

How many numbers would you like to type? 5
Enter number : 75
Enter number : 436
Enter number : 1067
Enter number : 8
Enter number : 32
You have entered: 75, 436, 1067, 8, 32,

此示例取自:http://www.cplusplus.com/doc/tutorial/dynamic/

或者您可以使用数据类型,例如 std::liststd::stackstd::vector...

堆栈示例:

stack<string> slist;
slist.add("stack");
slist.add("a");
slist.add("am");
slist.add("i");
for(i=0;stack.size();i++)
cout << stack.pop()<< " ";

输出:

i am a stack

关于c++ - 一次输入一行到c++中的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34033184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com