3

私はプログラミングが得意ではなく、経験もありません。これは、教師の助けがほとんどないクラスのためのものです。

タイトルは私が得ているエラーです。これは機能です:

void CapFormat (string Names, int NameCount)
 {
   int Comma;
   int c;
   int d;

    string::size_type len;

   for(c = 0; c < NameCount; c ++)
   {
     len = static_cast<unsigned> (Names[c].size);  //error starts here
     for(d = len; d > 0; d --)
     {
       tolower((Names[c].at(d)));  //supposed to lower cases every letter
     }
     touppper(Names[c].at(0));  //supposed to upper case first letter
     Comma = Names[c].find(",");  //supposed to find a comma between last and first names
     Comma = Comma + 1;
     toupper(Names[c].at(Comma));  //Error here as well.  supposed to then upper case letter after the comma.
   }
 }

エラーの拡張版は次のとおりです。

In function âvoid CapFormat(std::string, int)â:
error: request for member âsizeâ in âNames.std::basic_string<_CharT, _Traits, _Alloc>::operator[] [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>](((long unsigned int)c))â, which is of non-class type âcharâ
error: request for member âatâ in âNames.std::basic_string<_CharT, _Traits, _Alloc>::operator[] [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>](((long unsigned int)c))â, which is of non-class type âcharâ
error: request for member âatâ in âNames.std::basic_string<_CharT, _Traits, _Alloc>::operator[] [with _CharT = char, _Traits = error: âtouppperâ was not declared in this scope
error: request for member âfindâ in âNames.std::basic_string<_CharT, _Traits, _Alloc>::operator[] [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>](((long unsigned int)c))â, which is of non-class type âcharâ
error: request for member âatâ in âNames.std::basic_string<_CharT, _Traits, _Alloc>::operator[] [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>](((long unsigned int)c))â, which is of non-class type âcharâ

Cstring、cctype、および string がすべて含まれています。私は自分の本から構文を直接コピーしました。すべてが正しいはずですが、エラーが残っています。

どうぞよろしくお願いいたします。

4

1 に答える 1

3

まず、Namesコードでパラメーターを使用する方法は、それが配列であることを示唆しています。しかし、あなたはそれを単一のオブジェクトとして宣言しました。したがって、エラー。

パラメータは明らかに次のいずれかとして宣言されるはずでした

void CapFormat (string Names[], int NameCount)

また

void CapFormat (string *Names, int NameCount)

(これは同じことです。)これをあなたの本と比較してください。それはあなたの間違いか、本の間違いです。

第二に、size行は次のように見えるはずです

len = static_cast<unsigned>(Names[c].size());

(余分に注意してください())。static_castそして、そこまでする必要はまったくありませんunsigned。やるだけ

len = Names[c].size();

これはstatic_castあなたのアイデアでしたか?それが本の中にあるとしたら、それはかなり奇妙な本になるでしょう。

不適切なint変数と適切なstring::size_type変数が非論理的に混在しているため、これが実際に本から引用されたものであるとは思えません。

于 2012-08-11T04:02:54.507 に答える