简体   繁体   中英

Passing on a char* which contains a path


I'm trying to pass through several functions a string with a path but the every '\\\\' I put in the path becomes a single '\\' in the inner function and I can't use it this way.
Is there a way to preserve the "\\\\" when entering a new function?
I'm using C++ on windows.
thanks :)

Be prepared for some obfuscated answer.

The \\ is the escape character (you have probably already encountered the \\n escape sequence for example), and \\\\ is the escape sequence that represents a single \\ character (in a sense, it can be understood as an escape of the escape character). If you really want to have \\\\ in your string, you'll have to use \\\\\\\\ :

std::cout << "\\\\something\\" << std::endl; /* prints "\\something\" */

Just to provide another example, suppose you'd like to have some " in a string. Writing :

const char *str = "Hello "World"";

will obviously not compile, and you will have to escape the " with a \\ :

const char *str = "Hello \"World\"";

In C++0x you will have a raw string literal:

R"(anything can appear here, even " or \\ )"

Where everything between "( and )" is part of the string -- no escaping necessary. In the current standard you can't achieve what you want.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM