1
#include <iostream>

using namespace std;

int main()
{
    char strin[206];

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

なぜこのエラーが発生するのですか?

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

私はこの初心者向けチュートリアルに従っています

4

5 に答える 5

5

エラーは、ある配列を別の配列に割り当てようとしていることに起因しています。代入演算子はそれを行うことができません。strcpy()またはを使用して配列をコピーする必要がありますstd::copy()

ただし、C++ で作業したいので、実際には文字列を格納するstd::string代わりにを使用する必要があります。char[]

于 2013-04-09T09:01:45.993 に答える
2

配列を別の配列に直接割り当てることはできません。要素から要素へコピーする必要があります。

ヘッダーstd::strcpyから使用<cstring>

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

 

ヘッダーstd::stringから使用<string>

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

 

C++ を使用しているので、2 番目のものを選択します。

于 2013-04-09T09:01:17.217 に答える
1

あなたのコード;

strin = "sds";

次のようにする必要があります。

strcpy(strin, "sds");
于 2013-04-09T09:01:22.820 に答える
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++
于 2013-04-09T09:03:11.253 に答える
0

strinは、 charsへのポインターではなく、charsへのconstポインターである配列です。constポインターを変更しようとしましたが、これは禁止されています

文字列をコピーする必要があります。たとえば、このように

strcpy (string, "sds");

(一般的なケースではバッファ オーバーフローに注意してください!)

于 2013-04-09T09:04:44.920 に答える