Really? I honestly doubt that is true. Can you give a reason?
Really? I honestly doubt that is true. Can you give a reason?
wouldn't code like that give you a compiler error because var3 is constCode:Code: const char* var1 = "test"; const char* var2 = ""; const char* var3[] = {var1, var2}; int a = 2; int c = 0; for(int b=0; b<a; b++) { if(var3[b]!="") { var3[c] = var3[b]; c++; } } while(c<a) { var3[c] = ""; c++; }
Keyboard Not Found! Press any key to continue. . .
^^ That code works for me and I use const...
Well, after thinking about my source code and looking at it, there are only two functions that I use that require my variables to char. The first one is the mysql_query function. I know I can use some conversion from string to char (since I already have a little bit of a string to char in my code). The other one is GetWindowText function. I dont know if the variable that it stores to can be a string or not, but I dont know if I never try.
Last edited by stickman; 04-18-2006 at 03:15 PM. Reason: Wrong function...it should be GetWindowText and not GetDlgItem
Well, I got two conversion functions, one from char to string and one from string to char...I only need these functions because the only way to GetWindowText is to use a char variable. Then I convert the char variable to a string variable and vice versa for SetWindowText. string variables make it much easier!!! I never knew string variables were as easy to use as they are (reminds me slightly of PHP variables, but not quite).
When I tried finding string to char and char to string functions, people were saying (on other sites) that its impossible or nearly impossible. If anyone is doing the same thing, here are my functions (very short functions cuz I like short functions):
If anyone has any shorter functions, then please post.Code:string convert2string(const char* char_var) { string string_var; string_var.insert(0,char_var); return string_var; } char* convert2char(string string_var) { int a = 0; int b = string_var.size(); char* char_var = new char[b+1]; while(a<b) { char_var[a] = string_var.at(a); a++; } char_var[b] = '\0'; return char_var; }
You don't actually need these functions. For GetWindowText, use a local character array to get the text and then assign that to the string. SetWindowText takes a const char* (not a plain char*), so you can just pass it the results of c_str().Code:string convert2string(const char* char_var) { return char_var; } const char* convert2char(string string_var) { return string_var.c_str(); }
Thanks for the info on the c_str(). I didnt know that. Before, when I tried setting the string variable to a char[x] (where x is a number), it gave me a compiler error. Now that I tried it again, it actualy worked ( GetWindowText(TEXTFIELD,somevarthatsachar[x],x); string = somevarthatsachar[x]; ). I still need convert2char because I have a query string variable and mysql_query only takes const char* and I have a SendMessage where I update the status bar with a string and it has to be (LPARAM)char (I'm not quite sure exactly which type of char or const char or whatever).
EDIT: I forgot to apply the info I learned for the c_str() to the mysql_query function, so I can use string_var.c_str() instead of converting it. Only need to find a way for the SendMessage without the functions.
EDIT EDIT: Just tested string_var.c_str() in the SendMessage function and it worked.
EDIT EDIT EDIT: Is there any way to store the GetWindowText into a variable without defining the size of the variable?
THANKS for your help!!!!!!!!!!!!!!!!!!
Last edited by stickman; 04-18-2006 at 08:56 PM.
Does getWindowText() return a char*? Then you can do
std::string str = getWindowText();
straight away. This operation is defined for std::string and works as expected.
Code:#include <stdio.h> void J(char*a){int f,i=0,c='1';for(;a[i]!='0';++i)if(i==81){ puts(a);return;}for(;c<='9';++c){for(f=0;f<9;++f)if(a[i-i%27+i%9 /3*3+f/3*9+f%3]==c||a[i%9+f*9]==c||a[i-i%9+f]==c)goto e;a[i]=c;J(a);a[i] ='0';e:;}}int main(int c,char**v){int t=0;if(c>1){for(;v[1][ t];++t);if(t==81){J(v[1]);return 0;}}puts("sudoku [0-9]{81}");return 1;}
>> Is there any way to store the GetWindowText into a variable without defining the size of the variable?
No, unless you use the MFC CString version of GetWindowText. If you'll notice, the version that takes a char* also takes a maxCount number of characters, because with C style strings you have to define the size of the array before you pass it to the function, and the function doesn't want to overrun the array bounds. So what you have to do is define the array to be the maximum number of characters you think will be returned from GetWindowText.
>> Does getWindowText() return a char*?
Nope, it takes a pointer as an output parameter.
getWindowText( DlgEdittextInt, char*, int )
I believe thats the "arguments" (using a PHP word, not sure if it applies to C++). char* is the variable to store the entered text to. int is the max number of characters to retrieve from the entered text (so really, my previous question becomes stupid because I would have to define this value and I might as well define a "char array" with the int value number of values. Me being the stupid me, I just realized I would only need one char array variable, for example:
Before, I had a different "char array" for each edittext box.Code:char var[255]; string var1, var2, var3; .... GetWindowText( THETEXTFIELD1INT, var, 255); var1 = var; GetWindowText( THETEXTFIELD2INT, var, 255); var2 = var; ....
Did I mention, by switching to use strings, I was able to decrease the size of my .exe by four times (it was 2mb and now its .5mb). I was using a regex header before to return some things within the variables, but now with string.find() and string.substr() and string.erase(), I'm able to do all the regex things I was doing before. However, its still uses approx. 4000 [units] of memory, which isnt that bad compared to some other programs.