如何使用fout()

时间:2011-04-08 03:51:48

标签: c++

有些人可以帮我创建这个命令


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

结果输出

osql -Ubatascan -Pdtsbsd12345 -dpos -ic:\temp_pd.sql

我想要的输出

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

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:5)

您所做的实际上是将多个字符串文字彼此相邻。表达式

"foo""bar"

被解析为两个字符串文字"foo""bar"。 C和C ++语言表示,当您将字符串文字彼此相邻时,它们会在编译时粘贴到一个大字符串文字中。因此,上面的表达式完全等同于单个字符串文字"foobar"

因此,您的表达式将被解析为以下三个字符串文字:

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

当粘贴在一起时形成字符串"osql -Udatascan -Pdtsbsd7188228 -dpos -ic:\\temp_pd.sql" (note that the third string is the empty string“”`)。

您要做的是使用转义序列\"在字符串文字中包含文字引号。写得像这样:

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

通常,引号"被解释为字符串文字的结尾,除非它前面有反斜杠,在这种情况下它被解释为字符串中的引号字符。