我正在写一个“猪拉丁”程序;读取用户的输入(名字和姓氏)使输入小写并根据名称中的内容更改名称。如果第一个字母(名字和姓氏)是元音,我们应该在它的末尾添加“方式”。
如果第一个字母是辅音,我们将取第一个字母,将它移到字符串的末尾并在其末尾添加“ay”。
尝试将文本添加到字符串末尾时,我的代码一直给我错误。它说它无法将字符串转换为字符,我不确定这意味着什么。它还说我不能将输出操作数 << 用于字符串,即使我以前使用过它。
错误发生在“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*)'
'operator<<'
54:错误: in不匹配'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;
}