gpt4 book ai didi

c++改组动态数组的内容?

转载 作者:太空宇宙 更新时间:2023-11-04 16:28:39 27 4
gpt4 key购买 nike

嘿伙计们,我正在尝试随机排列我的动态数组的内容,但它不起作用。我想知道你们是否有任何可以帮助我的建议或链接/资源。我正在尝试使用 std::randomshuffle 但我的测试吐出 0 而不是正确的数据。

Songs *ptr;
ptr = new Songs[25];

ifstream fin;
fin.open("input.txt");

while (fin.good()) //my input
{
getline(fin, song[num].title);
getline(fin, song[num].artist);
fin >> song[num].mem;
num++;
fin>>ws;
}
fin.close();

这是我的函数,我正在尝试使用 randomshuffle

void shuffle (char choice, Songs song[], Songs *ptr, string title, string artist, int  mem, int num)
{
if (choice == '4')
{
std::random_shuffle(ptr, ptr + num); //shuffle
}
for (int i = 0; i<num; i++) //test
{
cout << ptr[i].title << ptr[i].artist << ptr[i].mem << endl;
}
}

最佳答案

切勿使用 istream::good()istream::eof() 作为循环条件。它几乎总是会产生错误代码(就像在本例中一样。)

尝试:

while (std::getline(fin, song[num].title) &&
std::getline(fin, song[num].artist) &&
fin >> song[num].mem)
{
num++;
fin>>ws;
}

正如 stinky 指出的那样,您的洗牌是正确的,尽管风格很糟糕。尝试:

void shuffle (char choice, Songs *ptr, int num)
{
if (choice == '4')
{
std::random_shuffle(ptr, ptr + num); //shuffle
}
for (int i = 0; i<num; i++) //test
{
std::cout << ptr[i].title << ptr[i].artist << ptr[i].mem << "\n";
}
}

关于c++改组动态数组的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9526141/

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