2013-11-03 119 views
-4

我試圖編寫一個文本冒險遊戲,並且我的代碼存在一些問題。語法錯誤字符串方法C++

此代碼的目的是創建一個方法,它接收一個字符串變量並以大寫形式返回它。

當我編譯它時,唯一的錯誤是語法錯誤,但我不知道它來自哪裏。

部首代碼:

#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的第8行 「的字符串texto :: Mayusculas(串言論報){」

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 
+1

您應該#include 而不是。 –

+4

什麼語法錯誤?請添加這個,加上什麼文件,類和行。編譯器告訴你,出於某種原因。 – usr2564301

+0

我已添加。 – Sergio

回答

1

上一個回答/評論: - 您似乎正在將字符添加到串+ =被 意味着連接字符串...你可以嘗試改變 nueva_palabranueva_palabra[i]=toupper(palabra[i]);, 但是沒有看到語法錯誤是很難看到哪裏 糾正。

爲了完成上述工作,您必須先將palabra的內容複製到nueva palabra才能訪問第i個項目,否則正確指出,您很可能在代碼中出現錯誤。

儘量避免混合字符數組和字符串,如果可能的話,你可以做到這一點,但如果你使用一個或另一個棒,字符串是一個更多的C++習慣做事情的方式字符數組是一個更加C語言習慣辦法。

+0

向字符串添加一個字符應該可以工作[很好](http://en.cppreference.com/w/cpp/string/basic_string/operator%2B%3D)。但是您正在訪問'nueva_palabra'''''''元素,雖然它是空的 - 這是非法的,並可能導致崩潰或損壞的內存。 –

+0

實際上是的,你是對的不認爲neva_palabra是空的,將修改答案 – GMasucci