gpt4 book ai didi

c++ - 将用户输入传递给带有 char* 参数的函数

转载 作者:行者123 更新时间:2023-11-28 03:47:49 28 4
gpt4 key购买 nike

我的代码出现以下错误。

cannot convert parameter 1 from 'std::string' to 'char *

no operator found which takes a right-hand operand of type 'const char *

有人可以告诉我在下面的 menuSelection 函数中我做错了什么吗?重点是如果用户从菜单选项中选择 1,程序将获取用户输入(lastName、firstName、courseName、letterGrade)并将其传递给 addRecord 函数,但我认为我的数据类型已关闭。

抱歉发了这么长的帖子。 menuSelection 函数位于 main() 和 head() 函数的右下方。

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

using namespace std;


void GradeBook::addRecord(char* lastName, char* firstName, char* className, char letterGrade)
{
StudentRecord* newRecord = new StudentRecord(lastName, firstName, className, letterGrade);
if (_headRecord == NULL) {
_headRecord = newRecord;
} else {
int compare = _headRecord->compareTo(lastName, firstName);
if (compare < 0) {
// we insert before the first element
newRecord->setNext(_headRecord);
_headRecord = newRecord;
} else {
_headRecord->insert(newRecord);
}
}
}

void menuSelection(int selection, GradeBook& gradeBook) {

string firstName;
string lastName;
string courseName;
char letterGrade;

switch(selection) {
case 1: cin >> lastName.c_str() >> firstName.c_str() >> courseName.c_str() >> letterGrade;
gradeBook.addRecord(lastName, firstName, courseName, letterGrade);
case 4: gradeBook.read("students.txt");
gradeBook.displayAllRecords();
break;
case 5: gradeBook.write("students1.txt");
break;
default: cout << "Enter a valid choice.\n";
}

if (selection != 5) {
displayMenu();
cin >> selection;
menuSelection(selection, gradeBook);
}
}

void header() {
cout << "STUDENT GRADEBOOK AND GPA CALCULATOR\n";
cout << "=====================================\n";
}

void main()
{
GradeBook gradeBook;

int userSelection;
header();
displayMenu();
cin >> userSelection; // get the user input for menu selection
menuSelection(userSelection, gradeBook);

char pause;

std::cin >> pause;
}

最佳答案

cin >> lastName.c_str() >> firstName.c_str() >> courseName.c_str()
>> letterGrade;

我不认为你真的想那样做。 c_str() 是将常规的 C++ std::string 转换为旧的 C 风格“字符串”,以便与需要这种野兽的函数一起使用。

如果您尝试输入常规 C++ 字符串,则应将其更改为:

cin >> lastName >> firstName >> courseName >> letterGrade;

事实上,除非您正在使用 C++ 的 C 库部分(或明确需要 C“字符串”的第三方函数),否则您永远不需要使用 char * 风格的字符串。拥抱语言并尽可能使用 std::string

关于c++ - 将用户输入传递给带有 char* 参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6926877/

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