[SOLVED] QSring and Char



  • when i run the program with the below code, i get an error: invalid conversion from 'const char*' to 'char'

    @char tt = "test";@

    yet when i change it too const char to fix the above error, i get the same error that i can't solve.

    @const char tt = "test";@

    I am trying to store "test" as a variable with char and its not working. I can store it with QString.



  • I moved this to the C++ Gurus forum, as it is no Qt specific problem (and nothing "guru" too, but anyways...)

    You ran into a simple C syntax problem: char is a single character, so it's ok to write

    @
    const char tt = 'a';
    @

    but "test" is a string, so you need to assign it to a char array:

    @
    const char *tt = "test";
    @

    spot the asterisk before the tt - it makes tt a char array (= C string) as opposed to a single character without it.



  • thank you Volker.
    but why would i want to use char instead of Qstring?

    I basically got the answer to this above question when I ran the new code. warning: deprecated conversion from string constant to 'char*'. I guess char is deprecated and I should use QString instead.



  • Neither char nor char* are deprecated. This are valid C constructs and will never go away. Your error is most probably the fact that you use "char *" instead of "const char *". Again, this is basic C/C++ stuff.

    But you are right, in that you should avoid C strings (char *) whenever possible, because they are cumbersome to work with and you can easily run into trouble with the memory management.

    So, your code would look better this way:

    @
    // this calls the QString constructor with a const char * argument:
    QString tt2("abc");
    @

    If you have non-ASCII strings, consider one of the fromXXX static methods of [[Doc:QString]].



  • Thank you Volker. Yes, I forget to add the const to my code below which is why i got that deprecated warning message.

    I will do some more c++ studying.

    @char *tt = "test";@


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.