[NEWBIE] from C string to std::string



 DEVELOP > c-Plus-Plus > [NEWBIE] from C string to std::string

LINK TO THIS PAGE  


rating :  0   |  0


  Page 1 of 1

1

 
Topic: DEVELOP > c-Plus-Plus
User: "Stefano Sabatini"
Date: 17 Jan 2008 05:02:28 AM
Object: [NEWBIE] from C string to std::string
Hi guys,
which is the best way to define a std::string using some C strings
(arrays of chars)?
Here it is the code:
#include <iostream>
#include <string>
using namespace std;
int main(void) {
string s;
// this won't even compile, since in this case "this is a" and
// others string are interpreted like char arrays
// s = "this is a" + " string.";
// OK, but awkward
s = string("this is a") + string(" string.");
cout << s;
// a better way??
// s = ...
return 0;
}
--
Stefano Sabatini
Linux user number 337176 (see http://counter.li.org)
.

User: "Stefano Sabatini"

Title: Re: [NEWBIE] from C string to std::string 17 Jan 2008 05:41:32 AM
On 2008-01-17, Stefano Sabatini <stefano.sabatini@caos.org> wrote:

Hi guys,
which is the best way to define a std::string using some C strings
(arrays of chars)?

Here it is the code:

#include <iostream>
#include <string>

using namespace std;

int main(void) {
string s;
// this won't even compile, since in this case "this is a" and
// others string are interpreted like char arrays
// s = "this is a" + " string.";

// OK, but awkward
s = string("this is a") + string(" string.");
cout << s;

// a better way??
// s = ...

return 0;
}

Mmh..., it was very simple, reading another thread and FAQ-C++-lite
then I finally found a satisfying solution:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(void) {
string s;
// this won't work, since in this case "this" are interpreted like char arrays
// s = "this is a" + " string.";
// OK, but awkward
s = string("this is a") + string(" string");
cout << s;
// a better way??
std::ostringstream o;
int i=-1;
o << "this is " << " a string " << "and this is a number: " << i << endl;
cout << o.str();
return 0;
}
for (int i=0; i < 10; i++)
cout << "regards ";
--
Stefano Sabatini
Linux user number 337176 (see http://counter.li.org)
.
User: "anon"

Title: Re: [NEWBIE] from C string to std::string 17 Jan 2008 05:51:37 AM
Stefano Sabatini wrote:

On 2008-01-17, Stefano Sabatini <stefano.sabatini@caos.org> wrote:

Hi guys,
which is the best way to define a std::string using some C strings
(arrays of chars)?

Here it is the code:

#include <iostream>
#include <string>

using namespace std;

int main(void) {
string s;
// this won't even compile, since in this case "this is a" and
// others string are interpreted like char arrays
// s = "this is a" + " string.";

// OK, but awkward
s = string("this is a") + string(" string.");
cout << s;

// a better way??
// s = ...

return 0;
}


Mmh..., it was very simple, reading another thread and FAQ-C++-lite
then I finally found a satisfying solution:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main(void) {
string s;
// this won't work, since in this case "this" are interpreted like char arrays
// s = "this is a" + " string.";

// OK, but awkward
s = string("this is a") + string(" string");
cout << s;

// a better way??
std::ostringstream o;
int i=-1;
o << "this is " << " a string " << "and this is a number: " << i << endl;
cout << o.str();

return 0;
}

This doesn't corespond to what you asked, as you haven't mentioned
numbers - only char arrays. I expected something like this:
string s( "a very "
"long "
"string" );
.
User: "Stefano Sabatini"

Title: Re: [NEWBIE] from C string to std::string 17 Jan 2008 06:09:03 AM
On 2008-01-17, anon <anon@no.no> wrote:

Stefano Sabatini wrote:

On 2008-01-17, Stefano Sabatini <stefano.sabatini@caos.org> wrote:

[...]

Mmh..., it was very simple, reading another thread and FAQ-C++-lite
then I finally found a satisfying solution:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main(void) {
string s;
// this won't work, since in this case "this" are interpreted like char arrays
// s = "this is a" + " string.";

// OK, but awkward
s = string("this is a") + string(" string");
cout << s;

// a better way??
std::ostringstream o;
int i=-1;
o << "this is " << " a string " << "and this is a number: " << i << endl;
cout << o.str();

return 0;
}


This doesn't corespond to what you asked, as you haven't mentioned
numbers - only char arrays. I expected something like this:

string s( "a very "
"long "
"string" );

Hi, yes indeed, though what I was trying to ask for was if that was
possible to use a string in way similar to an iostream. sstream
addresses this requirement.
Thanks for your attention.
Regards.
--
Stefano Sabatini
Linux user number 337176 (see http://counter.li.org)
.
User: "Linonut"

Title: Re: [NEWBIE] from C string to std::string 17 Jan 2008 11:45:24 AM
* Stefano Sabatini peremptorily fired off this memo:

string s( "a very "
"long "
"string" );


Hi, yes indeed, though what I was trying to ask for was if that was
possible to use a string in way similar to an iostream. sstream
addresses this requirement.

Thanks for your attention.

Don't forget about:
s += "string value";
--
Intellect annuls Fate.
So far as a man thinks, he is free.
-- Ralph Waldo Emerson
.




User: "Jim Langston"

Title: Re: [NEWBIE] from C string to std::string 17 Jan 2008 08:24:41 PM
Stefano Sabatini wrote:

Hi guys,
which is the best way to define a std::string using some C strings
(arrays of chars)?

Here it is the code:

#include <iostream>
#include <string>

using namespace std;

int main(void) {
string s;
// this won't even compile, since in this case "this is a" and
// others string are interpreted like char arrays
// s = "this is a" + " string.";

// OK, but awkward
s = string("this is a") + string(" string.");
cout << s;

// a better way??
// s = ...

return 0;
}

Only the first string has to be converted to a std::string. Consider.
#include <string>
int main()
{
std::string s1;
s1 = "String1";
s1 += "string2";
std::string s2;
s2 = std::string("String1") + "String2";
std::string s3;
s3 = std::string("String1") + "String2" + "String3" + "String4";
}
--
Jim Langston
tazmaster@rocketmail.com
.

User: "Bo Persson"

Title: Re: [NEWBIE] from C string to std::string 17 Jan 2008 12:49:50 PM
Stefano Sabatini wrote:

Hi guys,
which is the best way to define a std::string using some C strings
(arrays of chars)?

Here it is the code:

#include <iostream>
#include <string>

using namespace std;

int main(void) {
string s;
// this won't even compile, since in this case "this is a" and
// others string are interpreted like char arrays
// s = "this is a" + " string.";

Adding two string literals together is done by the preprocessor. You
just have to put them adjacent to each other, WITHOUT any operators:
s = "this is a" " string.";
Of course, why would you want to do this? :-)
Bo Persson
.
User: "Juha Nieminen"

Title: Re: [NEWBIE] from C string to std::string 22 Jan 2008 06:14:00 AM
Bo Persson wrote:

s = "this is a" " string.";

Of course, why would you want to do this? :-)

I use this quite a lot with strings which are longer than a
reasonably-sized code line. I also often use it with multi-lined strings
(ie. strings which have newlines in them), eg like this:
s = "This is a long text with\n"
"several lines using the\n"
"newline character.\n";
.

User: "Richard Herring"

Title: Re: [NEWBIE] from C string to std::string 22 Jan 2008 05:49:11 AM
In message <5v9ma0F1kefs9U1@mid.individual.net>, Bo Persson <bop@gmb.dk>
writes

Stefano Sabatini wrote:

Hi guys,
which is the best way to define a std::string using some C strings
(arrays of chars)?

Here it is the code:

#include <iostream>
#include <string>

using namespace std;

int main(void) {
string s;
// this won't even compile, since in this case "this is a" and
// others string are interpreted like char arrays
// s = "this is a" + " string.";


Adding two string literals together is done by the preprocessor. You
just have to put them adjacent to each other, WITHOUT any operators:

s = "this is a" " string.";


Of course, why would you want to do this? :-)

One reason might be to embed comments:
std::string angleExpression(
"^\\s*" /* skip leading whitespace */
"([-+]?)" /* exp1 is optional sign */
"\\s*" /* skip whitespace */
"(\\d*)" /* exp2 is integer degrees */
"([:nsew])" /* exp3 is punctuation, maybe quadrant letter */
"(\\d*)" /* exp4 is integer minutes */
"[:']" /* punctuator between min & sec */
"(\\d*)" /* exp5 is integer part of seconds */
"[.,]?" /* maybe there's a decimal part */
"(\\d*)" /* exp6 is fraction of seconds */
"[:"]?" /* may be final punctuation */
"\\s*" /* whitespace */
"([nsew]?)" /* exp7 is quadrant letter */
);
--
Richard Herring
.



  Page 1 of 1

1

 


Related Articles
 

NEWER

pg.1232     pg.940     pg.716     pg.544     pg.412     pg.311     pg.234     pg.175     pg.130     pg.96     pg.70     pg.50     pg.35     pg.24     pg.16     pg.10     pg.6     pg.3     pg.1

OLDER