![]() |
| ||
| How does one tolower an entire string? You see, I am writing a program that uses strings for input to determine things, and I don't want it to be case sensitive. So, I know you can go through a string and go char by char to store each char, tolower()'d into another string while in a for loop, but I don't know how to get the string's length or how to get char positions in strings anymore (it's been a while).Any help is appreciated! |
| ||
| Re: How does one tolower an entire string? kk, if this is C then you use a test against '\0' to look for the end and do sumthin' like this. int i;One of the few things a cutie like me is anal about is avoiding pointers when they aren't needed. Employers like to think that this is a better solution. I haven't figured out why yet. char *p;In fact, at my last interview, the dude's insistence on using pointers for something stupid was the deal breaker for an otherwise sweet gig. That's how silly I am about it. ;) But! Back to the present, the first loopy makes it clear that you're working with a string. Not just a string, a string that lives in an array. In other words, you can change it! If it's a pointer, you jus' can't be sure, can ya? Sure, sure, if it's a function parameter then the point is moot because you've got a pointer whether you like it or not. But at the very least, the array notation is a cool little mnemonic for those of us that just aren't that bright. Words of wisdom (ha!) from a grunt in the trenches, yo. void StrLower(char str[])If this is C++ then you've got options. And do I mean options! It's not C++ if you don't complicate the world, right? struct Lowey {transform comes from the algorithm header, and tolower is in cctype. You can also use tolower directly, but it's troublesome.std::transform(str.begin(), str.end(), str.begin(), std::tolower);The biggest trouble is that both iostream and cctype declare a tolower, and there'd be an ambigimuity. :p But people look at me funny if I don't abusively use the STL in my C++ codage. Hmm, then again, they may look at me funny because I do... |
| ||
| Re: How does one tolower an entire string? Oh yeah, this is C++, btw, sorry not to mention that. I didn't know about the ambiguity with cctype and iostream, that's interesting... And I was planning on using something similar to your first C example in this case, but I was going to have a get char type thing that would store into a temp string, but I guess I forgot how to get the length of a string. So, how do I get the length of a string in C++? |
| ||
| Re: How does one tolower an entire string? Do you mean the length of a c-style string (char array) or the length of a std::string? You could use strlen for the former, and the length() member function for the latter |
| ||
| Re: How does one tolower an entire string? Quote:
|
| ||
| Re: How does one tolower an entire string? Here is a mildly more modern way: // convert string to all lower caseI know you are looking also at Python: str1 = "THIS IS A TEST"Or as a one-liner: print "THIS IS A TEST".lower() |
| ||
| Re: How does one tolower an entire string? Alrighty, got the function written, thanks! |
| ||
| std::transform(str.begin(), str.end(), str.begin(), ::tolower); this is the solution, note the lack of std before ::tolower. |
| All times are GMT -4. The time now is 4:28 pm. |
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC