-4

テキスト アドベンチャー ゲームをプログラミングしようとしていますが、コードに問題があります。

このコードの目的は、文字列変数を受け取って大文字で返すメソッドを作成することです。

コンパイルすると、唯一のエラーは構文エラーですが、どこから来たのかわかりません。

ヘッダー コード:

#include "stdafx.h"
#include <iostream>
#include <ctype.h>
#include <string>

using namespace std;

class texto{


public:
   string Mayusculas(string);

};

Cpp コード:

#include "Texto.h"
#include "stdafx.h"

using namespace std;

 string texto::Mayusculas(string palabra){

    int i;
    string nueva_palabra;
    for (i = 0; i < palabra.size(); i++){

         nueva_palabra += toupper(palabra[i]);

    }

    return nueva_palabra;
}

構文エラーはすべて cpp "string texto::Mayusculas(string palabra){" の 8 行目にあります。

Error   6   error C2059: error de sintaxis : ')'
Error   7   error C2143: error de sintaxis : expected ';' after '{' 
Error   5   error C2146: error de sintaxis : expected ')' after 'palabra'
Error   3   error C2146: error de sintaxis : expected ';' after 'Mayusculas'
Error   8   error C2447: '{' : falta el encabezado de función (¿lista formal de     estilo anterior?)
Error   2   error C2653: 'texto' : no es un nombre de clase o espacio de  nombres   
Error   4   error C4430: falta el especificador de tipo; se presupone int.     Nota: C++ no 
Advertencia 1   warning C4627: '#include "Texto.h"': se omite al buscar el uso del encabezado precompilado
4

1 に答える 1

1

前の回答/コメント: - 文字列 += が文字列を連結するための文字列に文字を追加しているようです... nueva_palabra行をnueva_palabra[i]=toupper(palabra[i]);に変更してみてください。これを修正します。

上記の作業を行うには、正しく指摘されているように、i 番目のアイテムにアクセスできるようにする前に、palabra の内容を nueva palabra にコピーする必要があります。コードにエラーが発生する可能性があります。

可能であれば、文字配列と文字列を混在させないようにしてください。それは可能ですが、どちらか一方を使用している場合、文字列はより C++ の慣用的な方法であり、文字配列はより C の慣用的な方法です。

于 2013-11-03T12:02:46.953 に答える