Я пишу программу для свиней на латыни; читать ввод от пользователей (имя и фамилия), сделайте ввод строчными буквами и измените имя в зависимости от того, что было в имени. Если первая буква (как имени, так и фамилии) была гласной, мы должны добавить путь до ее конца.
Если первая буква была согласной, мы должны были взять первую букву, переместить ее в конец строки и добавить в конец строки «у».
Мой код выдает ошибки при попытке добавить текст в конец строки. Он говорит, что не может преобразовать строку в символ, и я не совсем уверен, что это значит. В нем также говорится, что я не могу использовать выходной операнд ‹< для строк, хотя я использовал его раньше.
Ошибки возникают с strcpy и окончательным кодом, в котором я выводю имена.
37: ошибка: невозможно преобразовать
'std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
в'char*'
для аргумента'1'
в'char* strcpy(char*, const char*)'
47: ошибка: невозможно преобразовать
'std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
в'char*'
для аргумента'1'
в'char* strcpy(char*, const char*)'
54: ошибка: нет совпадений для
'operator<<'
в'std::cout << first'
Мне просто нужна помощь, чтобы исправить ошибки и посмотреть, где я ошибся. Полный код прилагается.
#include <iostream>
#include <vector>
#include <cstring>
#include <string>
using namespace std;
int main()
{
int q, s;
char shea[] = "way";
char gavin_stop_looking_at_ponies[] = "ay";
vector <string> first;
vector <string> last;
cout << "Please enter your first name." << endl;
for (int i = 0; i < first.size(); i++)
{
getline (cin, first[i]);
string nfirst = first[i];
while (nfirst[q])
{
nfirst[q] = tolower(nfirst[q]);
}
first[i] = nfirst;
}
cout << "Please enter your last name." << endl;
for (int j = 0; j < last.size(); j++)
{
getline (cin, last[j]);
string nlast = last[j];
while (nlast[s])
{
nlast[s] = tolower(nlast[s]);
}
last[j] = nlast;
}
if ( (first[0] == "a") ||( first [0] == "e") || (first [0] == "i") || (first [0] == "o") || (first [0] == "u"))
{
strcpy (first, "way");
}
else
{
first[first.size()] = first[0] + "ay";
}
if ( (last[0] == "a") ||( last [0] == "e") || (last [0] == "i") || (last [0] == "o") || (last [0] == "u"))
{
strcpy (last, "way");
}
else
{
last[last.size()] = last[0] + "ay";
}
cout << first << last << endl;
return 0;
}
while
циклы, чтение неинициализированных переменных, ошибки выхода индекса за пределы допустимого диапазона и путаницу в том, как использоватьstd::vector
. - person Blastfurnace   schedule 04.04.2013