「各単語の最初の文字を大文字にする」というコードの一部がありますが、わかりません。 http://www.cplusplus.com/forum/beginner/117463/コードの一部で混乱しています
std::string str = x;
str [0] = toupper (str[0]);
std::for_each(str.begin()+1, str.end(), printChars);
std::cout << str;
return 0;
}
Void printChars(char& c)
{
if((*(&c - sizeof(char))) == " ")
c = toupper(c);
}
私はそれは常に資本への最初の文字を設定し、後の文字列の各1をチェックし理解しています。
しかし、なぜ彼はif((*(&c - sizeof(char))) == " ")
を使用しないとどのように
*、
&この場合には、空白の作業にそれを設定していますか?
このプログラムはすべて間違っています。 – user2079303
私はこのコードが前の文字がスペースであったかどうかを検出し、そうであれば現在の文字を大文字にする_tries_と推測します。しかし、たとえあなたが表示した例がUB(未定義の振る舞い)を示すのではない場合でも、配列の最初の要素(またはただ一つの文字)で呼び出すので、関数の使い方に注意する必要があります。実際にUBを展示するでしょう。編集:私はあなたがcharと '' char * 'を比較しているので、比較が行われていることが気になりました。 '==" "'これはほとんど同じではないでしょう。 –
@AlgirdasPreidžius:コードは形式が不適切です。つまり、コンパイル不可能です(伝統的なC++コンパイラは、このようなエラーに対して単なる「警告」として知られていません)。 OPは明らかにオリジナルコードを巧みに再現することに失敗した(これは「ボイド」からも明らかである)。本当のコードがそこにあるということはありません。 – AnT