私は「豚ラテン」プログラムを書いています。ユーザーからの入力 (名と姓) を読み取り、入力を小文字にし、名前の内容に応じて名前を変更します。(名前と姓の両方の) 最初の文字が母音の場合、その末尾に「way」を追加する必要があります。
最初の文字が子音の場合、最初の文字を文字列の末尾に移動し、末尾に「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*)'
54 : エラー:
'operator<<'
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;
}