2017-12-12 16 views
-1

私はC++を使用しており、std::stringは使いたくありません。私は、条件付きの値に基づいてCスタイルの文字列の値を設定しようとしています。これは可能ですか?ここで条件付きでCスタイルの文字列をC++で設定するには?

が最小作業例です:

#include <iostream> 

void print_thing(int a) 
{ 
    char* message; 

    switch (a) 
    { 
    case 1: 
     message = "case 1"; 
     break; 
    default: 
     message = "case 2"; 
     break; 
    } 

    std::cout << message << std::endl; 
} 

int main() 
{ 
    int a{ 5 }; 
    print_thing(a); 
} 

このプログラムはエラーではありませんが、文字列リテラルに非constchar*を設定するために、悪いフォームと思われます。これを行うより良い方法はありますか?

+2

ポインタを初期化するとどうなりますか?たとえば、 'char * message = nullptr;' –

+3

'a'が1でも2でもない場合、' message'はどのような値になりますか?これは、コンパイラが不平を言っている正確なエラーです。 'default'節を' switch'に代入するか、宣言で初期化することで問題を取り除くことができます。 – Alejandro

+0

エラーではなく警告である可能性がありますか? – user463035818

答えて

4

C++の文字列リテラルがタイプconst char[](Cと異なり、char[])以外のコードは問題ありません。したがって、変数はconst char* message;と宣言する必要があります。

関連する問題