开发者

C++: How to build Strings / char*

I'm new to C++. I want to make a char*, but I don't know how.

In Java is it just this:

int player = 0;
int cpu = 0;
String s = "You: " + player + " CPU: " + cpu;

How can I do th开发者_如何学编程is? I need a char*.

I'm focusing on pasting the integer after the string.


You almost certainly don't want to deal with char * if you can help it - you need the C++ std::string class:

#include <string>
..
string name = "fred";

or the related stringstream class:

#include <sstream>
#include <string>
#include <iostream>
using namespace std;

int main() {

  int player = 0;
  int cpu = 0;

  ostringstream os;
  os << "You: " << player << " CPU: " << cpu;
  string s = os.str();
  cout << s << endl;
}

if you really need a character pointer (and you haven't said why you think you do), you can get one from a string by using its c_str() member function.

All this should be covered by any introductory C++ text book. If you haven't already bought one, get Accelerated C++. You cannot learn C++ from internet resources alone.


If you're working with C++, just use std::string. If you're working with char*, you probably want to work with C directly. In case of C, you can use the sprintf function:

char* s = // initialized properly
sprintf( s, "You: %d CPU: %d", player, cpu );


Just call s.c_str( );.Here you you can see more.

PS. You can use strcpy to copy the content to new variable and then you will be able to change it.


char * means "pointer to a character".

You can create a pointer to a 'string' like this:

char* myString = "My long string";

Alternatively you can use std::string:

std::string myStdString("Another long string");
const char* myStdString.c_str();

Notice the const at the beginning of the last example. This means you can't change the chars that are pointed to. You can do the same with the first example:

const char* = "My long string";


Consider using stringstreams:

#include <iostream>
#include <sstream>

using namespace std;
int main ()
{
    int i = 10;

    stringstream t;

    t << "test " << i;

    cout << t.str();
}


It probably would have been for the best if C++ had overloaded the "+" operator like you show. Sadly, they didn't (you can though, if you want to).

There are basicly three methods for converting integer variables to strings in C++; two inherited from C and one new one for C++.

  1. The itoa() routine. This is actually non-standard, but most compilers have it. The nice thing about it is that it returns a pointer to the string, so it can be used in functional-style programming.
  2. sprintf(). The second holdover from C, this routine takes a destination string, a format string, and a list of parameters. How many parameters there are, and how they are interpreted depend on how the "format" string parses. This makes sprintf both immensely powerful and immensely dangerous. If you use this approach, I can pretty much guarantee you will have crash bugs your first few tries.
  3. std::ostringstream. The C++ way. This has pretty much all the power of sprintf(), but is much safer. The drawback here is that you have to declare it, and it is not a string, so you still have to convert it to one when you are done. That means at least three lines of code are required to do anything with an ostringstream. It is also really ugly, particularly if you try any special formatting.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜