2013-04-09 68 views
1
#include <iostream> 

using namespace std; 

int main() 
{ 
    char strin[206]; 

    strin = "sds"; 
    cout<<strin; 
} 

爲什麼會出現此錯誤?使用char []創建字符串

error: incompatible types in assignment of 'const char [4]' to 'char [206]' //on line strin = "sds" 

我下面this初學者教程

+3

用途:'strcpy'。等等,爲什麼不簡單地使用'std :: string'? – 2013-04-09 09:00:01

+2

呵呵,Ankur問「爲什麼」,每個人都回答「該怎麼辦」:) – 2013-04-09 09:02:00

+4

我建議忽略該教程。它是......如何把這個放在好的工作中 - 不要說出那些好話。這很糟糕。你不會從中學習C++。 – 2013-04-09 09:03:14

回答

5

錯誤來自於事實,你想一個數組分配到另一個。賦值運算符不能這樣做;您必須使用strcpy()std::copy()複製陣列。

但是,由於您希望使用C++,因此您應該使用std::string而不是char[]來存儲字符串。

2

不能直接數組分配給另一個。它應該被複制到元素元素。

std::strcpy使用從<cstring>

char strin[206]; 
std::strcpy(strin, "sds"); 

 

使用std::string<string>

std::string strin; 
strin = "sds"; 

 

由於您使用的是C++,因此請選擇第二個。

1

您的代碼;

strin = "sds"; 

應該是:

strcpy(strin, "sds"); 
0

C/C++沒有內置的字符串操作。您需要使用兩個函數:

strcpy(strin, "sds"); // will work in C and C++ 
// strncpy(strin, "sds", 205); // safer if you want to copy user-given string 

std::string

std::string strin(206, 0); 

strin = "sds"; // only C++ 
0

〜應變是一個數組,它是一個常量指針字符,而不是一個指針字符。 您試圖更改const指針,這是禁止的

您需要複製字符串。例如這樣

strcpy (string, "sds"); 

(緩衝意識到在一般情況下溢出!)

+0

所以我理解的是,當複製一個數組時,你實際上並沒有克隆這個數組,而只是獲得了對原始數組的引用,是嗎? – 2013-04-09 09:16:57

+0

'xys =「123」'不會複製,它只是改變指針(如果允許)。這樣就是對的 – 2013-04-09 09:19:47