gpt4 book ai didi

c++ - 输入从指针接受空格时出现问题

转载 作者:行者123 更新时间:2023-12-02 10:11:10 24 4
gpt4 key购买 nike

我试图用我的名字char接受空格,但是每次输入(在int main中问)我想输入多少个分数后,我每次运行程序时,都会出错并同时提示两个输入。任何帮助/建议,将不胜感激。

void readData(vector<Highscore>& scores)
{
//Local integer variable used to update user #
int index = 0;

//For loop iterator that stores user input and name
for(vector<Highscore>::iterator i = scores.begin(); i != scores.end(); i++)
{
//Prompts user for name
cout << "Enter the name for score #" << (index + 1) << ": ";
cin.getline(i->name,'\n');
//cin >> i->name;

//Prompts user for their score
cout << "Enter the score for score #" << (index + 1) << ": ";
cin >> i->score;

//Keeps track of the index and updates it everytime it iterates
index++;
}
cout << endl;
}

最佳答案

在此声明之后

cin >> i->score;
输入缓冲区包含与按下的Enter键相对应的换行符 '\n'
因此,下一个 std::getline调用将读取一个空字符串。
您需要在调用 std::getline之前将其删除。
您可以插入此语句
std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
在这句话之后
cin >> i->score;
为此,您需要包括标题
#include <limits>
试试这个示范程序
#include <iostream>
#include <string>
#include <limits>

int main()
{
std::string s;
char c;

do
{
std::cout << "Enter a string: ";
std::getline( std::cin, s );
std::cout << s << '\n';

std::cout << "Continue ('y' to continue)? ";
std::cin >> c;
std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
} while ( c == 'y' || c == 'Y' );

return 0;
}

关于c++ - 输入从指针接受空格时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63521296/

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