Baoky chen
Baoky chen

Reputation: 183

C++ how to use a variable in a string

The following code doesn't work:

string currency;
currency = "EURUSD";

system("lynx -dump 'http://somesite.com/q?s="+currency+"=X' > file.txt");

How do I use currency inside this line of C++'s system() call?

This is my error:

Error value:
main.cpp: In function ‘int main()’:
main.cpp:22:84: error: cannot convert ‘std::basic_string<char>’ to ‘const char*’ for argument ‘1’ to ‘int system(const char*)’
make: *** [main.o] Error 1
BUILD FAILED (exit value 2, total time: 890ms)

In PHP I use . to join strings, but in C++ I am not sure of the syntax.

Upvotes: 2

Views: 7834

Answers (4)

steffen
steffen

Reputation: 8968

That should work.

std::string currency("EURUSD");
std::string command("lynx -dump 'http://somesite.com/q?s="+currency+"=X' > file.txt")
system(command.c_str());

Upvotes: 0

johnsyweb
johnsyweb

Reputation: 141928

You can't + a std::string to a char []. Although you can + a char [] to a std::string.

I suggest using std::strings and getting the const char* just for the call to system():

string const currency = "EURUSD";
string const command_line = "lynx -dump 'http://somesite.com/q?s=" + currency + "=X' > file.txt";

system(command_line.c_str());

Upvotes: 2

perreal
perreal

Reputation: 98108

Using stringstream:

#include <sstream>
string currency;
currency = "EURUSD";
std::stringstream ss;
ss << "lynx -dump 'http://somesite.com/q?s=" << currency << "=X' > file.txt";
system(ss.str().c_str());

Upvotes: 5

Ignacio Vazquez-Abrams
Ignacio Vazquez-Abrams

Reputation: 799250

std::string::c_str() will give you a char* (const'd somehow) that you can use in C string functions. But you should consider creating a std::string that contains the full command first.

Upvotes: 2

Related Questions