Я все время получаю сообщение об ошибке при каждом запуске этого кода. Ошибка находится прямо над моим циклом while (строка 13 или 15). Это связано с моей cin.getline
.
Ошибка:
1>e:\projects (programming 1)\string\string\string.cpp(15) : error C2664:
'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>
::getline(_Elem *,std::streamsize)' : cannot convert parameter 1 from 'char' to 'char *'
И да, я пробовал использовать cin >> ans;
и это дает мне ошибку времени выполнения.
Спасибо, если вам потребуется время, чтобы помочь! : D
// Zachary Law Strings.cpp
#include <iostream>
using namespace std;
#include <string>
#include <iomanip>
int main()
{
char ans;
cout << "Would you like to work with the string program? Please type 'y' or 'Y' to execute the program: ";
cin.getline(ans, 2);
while (ans == 'Y' || ans == 'y')
{
int x, i, y;
char name[] = "Please enter your name: ";
char answer1[80];
string mystring, fname, lname;
i = 0;
y = 0;
cout << name;
cin.getline(answer1, 79);
cout << endl;
x = strlen(answer1);
for (int i = 0; i < x; i++)
{
cout << answer1[i] << endl;
if (isspace(answer1[i]))
{
y = i;
}
}
cout << endl << endl;
cout << setw(80) << answer1;
mystring = answer1;
fname = mystring.substr(0, y);
lname = mystring.substr(y, x);
cout << "First name: " << fname << endl;
cout << "Last name: " << lname << endl;
mystring = lname + ',' + fname;
cout << setw(80) << mystring;
cout << "Would you like to work with the string program again? Please type 'y' or 'Y' to execute the program: ";
cin >> ans;
}
return 0;
}
Для функции std::istream::getline()
требуется параметр char*
, который должен быть буфером определенного размера.
По крайней мере, для вашего случая, читающего один символ, вы можете предоставить буфер, например
char ans[2];
cin.getline(ans, 1); // << You only want to read a single character
и измените условие цикла на
while (ans[0] == 'Y' || ans[0] == 'y') {
// ...
}
Предполагается, что std::istream::getline()
записывает результаты в буфер char[]
, в результате чего строка C-стиля с нулевым завершением.