开发者

how to use fout ()

开发者 https://www.devze.com 2023-02-23 02:55 出处:网络
Can some help mei have create this command fout <<\"osql -Ubatascan -Pdtsbsd12345 -dpos -i\"\"c:\\\\temp_pd.sql\"\"\"<<endl;

Can some help me i have create this command


fout <<"osql -Ubatascan -Pdtsbsd12345 -dpos -i""c:\\temp_pd.sql"""<<endl;

Result Output

osql -Ubatascan -Pdtsbsd12345 -dpos -ic:\te开发者_开发知识库mp_pd.sql

Output that i want

osql -Ubatascan -Pdtsbsd12345 -dpos -i"c:\temp_pd.sql"

can some one help?


What you're doing is actually writing multiple string literals next to each other. The expression

"foo""bar"

gets parsed as the two string literals "foo" and "bar". The C and C++ languages say that when you have string literals next to each other, they get pasted together into one big string literal at compile time. So, the above expression is entirely equivalent to the single string literal "foobar".

Hence, your expression gets parsed as the following three string literals:

"osql -Udatascan -Pdtsbsd7188228 -dpos -i"
"c:\\temp_pd.sql"
""

Which when pasted together form the string "osql -Udatascan -Pdtsbsd7188228 -dpos -ic:\\temp_pd.sql" (note that the third string is the empty string""`).

What you want to do is to use the escape sequence \" to include a literal quotation mark within your string literal. Write it like this:

"osql -Udatascan -Pdtsbsd7188228 -dpos -i\"c:\\temp_pd.sql\""

Normally, the quotation mark " gets interpreted as the end of a string literal, except when it's preceded by a backslash, in which case it gets interpreted as a quotation mark character within the string.

0

精彩评论

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