Thread: Can't add string literals.

  1. #1
    Registered User
    Join Date
    Jan 2008
    Posts
    28

    Can't add string literals.

    I posted this problem in another post but seeing how that was for a different problem and I'd already been given a solution I thought I'd make a new post.
    For some reason, I cannot add string literals using the + operator. I've tried tons of different functions such as copy(), strcat(), etc. BUT every friggin time, it either gives me error C2110 or it compiles and gives me a unreadable figure. I've tried conversions, I've tried everything that I know including 3 different compilers (Borland, VC, GNU GCC).

    Would someone please find my dunce mistake so I can get on with my coding self?
    If you need the compilable code please ask.

    Code:
    #include <iostream>
    #include <string>
    #include <windows.h>
    
    using namespace std;
    
    char getGrid()
    {
        char grid[6][6];
        for ( int i = 0; i < 6; i++)
        {
            for ( int j = 0; j < 6; j++)
            {
                char* szResult = new char[255];
                memset(szResult, 0x00, 255);
                char szKey[] = "grid[" + i + "][" + j + "]"; // WILL NOT DO WHAT I NEED. 
                                                              //This isn't the only option I've tried. 
                                                             //Probably something easy I'm missing...
    
                cout << szKey << " " << i << " " << j << endl; //int i and int j have normal values.
                GetPrivateProfileString("Grid", szKey, "", szResult, 255, ".\\default.ini");
                grid[i][j] = (int)szResult;
            }
    
        }
        return **grid;
    }

  2. #2
    Jack of many languages Dino's Avatar
    Join Date
    Nov 2007
    Location
    Chappell Hill, Texas
    Posts
    2,332
    You can't do this in C or C++.
    Code:
    char szKey[] = "grid[" + i + "][" + j + "]"; // WILL NOT DO WHAT I NEED.
    But of course, you've figured that out by now!!

    Define szKey as a C++ String and then try the *concatenation operator* (aka, the plus sign).
    Mainframe assembler programmer by trade. C coder when I can.

  3. #3
    Kernel hacker
    Join Date
    Jul 2007
    Location
    Farncombe, Surrey, England
    Posts
    15,677
    However, you can't use + on integers with strings - only strings and char arrays.

    http://www.cppreference.com/wiki/str...ring_operators

    One possible solution is to use stringstream, which is the C++ corresponding to sprintf.

    --
    Mats
    Compilers can produce warnings - make the compiler programmers happy: Use them!
    Please don't PM me for help - and no, I don't do help over instant messengers.

  4. #4
    Registered User
    Join Date
    Jan 2008
    Posts
    28
    matsp, thanks. This seems to work very well.
    Last edited by computerquip; 11-13-2008 at 01:22 AM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. help! string literals
    By cakestler in forum C Programming
    Replies: 16
    Last Post: 02-05-2009, 11:41 AM
  2. help needed! string literals
    By cakestler in forum C++ Programming
    Replies: 2
    Last Post: 02-03-2009, 01:26 PM
  3. OOP Question DB Access Wrapper Classes
    By digioz in forum C# Programming
    Replies: 2
    Last Post: 09-07-2008, 04:30 PM
  4. We Got _DEBUG Errors
    By Tonto in forum Windows Programming
    Replies: 5
    Last Post: 12-22-2006, 05:45 PM
  5. RicBot
    By John_ in forum C++ Programming
    Replies: 8
    Last Post: 06-13-2006, 06:52 PM