我用OPENFILENAME函数建立打开目录对话框,但是lpstrFile 只能返回这种形式目录及文件名,如:“D:\C++\SignAddin\file.doc”。
如果我现在想得到“D:\\C++\\SignAddin\\file.doc”,应该怎么做?
D:\C++\SignAddin\file.doc与D:\\C++\\SignAddin\\file.doc有什么不同,为什么我程序中只能用"\\",用“\”就出错??
6 个解决方案
#1
在c语言中字符串里单斜杠在代码里是转义字符的前缀。写代码需要用 \\ 代表一个字符 \ ,你所得到的 "D:\C++\SignAddin\file.doc" 是实际的字符信息,是正确的不用再变成"D:\\C++\\SignAddin\\file.doc" ,如果真的需要变成这样,可以用 CString 的 replace 函数。不过我建议楼主搞清楚 c/c++ 的转义字符再说吧
#2
char const* zInputFile ="D:\\C++\\RSA\\file.doc";
string sData;
FileSource(zInputFile, true, new StringSink(sData));
byte abDigest[SHA::DIGESTSIZE];
SHA sha;
StringSource(sData, true,new HashFilter(sha,new ArraySink(abDigest, sizeof(abDigest))));
可是这个实现的计算Hsah值的函数用"D:\C++\RSA\file.doc"就不行。
string sData;
FileSource(zInputFile, true, new StringSink(sData));
byte abDigest[SHA::DIGESTSIZE];
SHA sha;
StringSource(sData, true,new HashFilter(sha,new ArraySink(abDigest, sizeof(abDigest))));
可是这个实现的计算Hsah值的函数用"D:\C++\RSA\file.doc"就不行。
#3
顶楼主一下
#4
自己用\\ 来替代 \ 字符
在代码中 \\需要先加一个 \ 来表示这是一个转义字符,这样后面那个 \ 就能表示对应的 符号,不然 会被转义
在代码中 \\需要先加一个 \ 来表示这是一个转义字符,这样后面那个 \ 就能表示对应的 符号,不然 会被转义
#5
楼主还是没有明白转义。在代码中书写字符串常量,双斜杠表示一个斜杠,比如这句:
char const* zInputFile ="D:\\C++\\RSA\\file.doc";
其实zInputFile指向的字符串是"D:\C++\RSA\file.doc"。
所以在字符串常量中需要双斜杠,但是如果一个字符串已经指向"D:\C++\RSA\file.doc"了,就不需要把单斜杠转换为双斜杠了。转换之后反而不是有效路径了。
#6
Replace 替换一下就可以了。
转义用的。
转义用的。
#1
在c语言中字符串里单斜杠在代码里是转义字符的前缀。写代码需要用 \\ 代表一个字符 \ ,你所得到的 "D:\C++\SignAddin\file.doc" 是实际的字符信息,是正确的不用再变成"D:\\C++\\SignAddin\\file.doc" ,如果真的需要变成这样,可以用 CString 的 replace 函数。不过我建议楼主搞清楚 c/c++ 的转义字符再说吧
#2
char const* zInputFile ="D:\\C++\\RSA\\file.doc";
string sData;
FileSource(zInputFile, true, new StringSink(sData));
byte abDigest[SHA::DIGESTSIZE];
SHA sha;
StringSource(sData, true,new HashFilter(sha,new ArraySink(abDigest, sizeof(abDigest))));
可是这个实现的计算Hsah值的函数用"D:\C++\RSA\file.doc"就不行。
string sData;
FileSource(zInputFile, true, new StringSink(sData));
byte abDigest[SHA::DIGESTSIZE];
SHA sha;
StringSource(sData, true,new HashFilter(sha,new ArraySink(abDigest, sizeof(abDigest))));
可是这个实现的计算Hsah值的函数用"D:\C++\RSA\file.doc"就不行。
#3
顶楼主一下
#4
自己用\\ 来替代 \ 字符
在代码中 \\需要先加一个 \ 来表示这是一个转义字符,这样后面那个 \ 就能表示对应的 符号,不然 会被转义
在代码中 \\需要先加一个 \ 来表示这是一个转义字符,这样后面那个 \ 就能表示对应的 符号,不然 会被转义
#5
楼主还是没有明白转义。在代码中书写字符串常量,双斜杠表示一个斜杠,比如这句:
char const* zInputFile ="D:\\C++\\RSA\\file.doc";
其实zInputFile指向的字符串是"D:\C++\RSA\file.doc"。
所以在字符串常量中需要双斜杠,但是如果一个字符串已经指向"D:\C++\RSA\file.doc"了,就不需要把单斜杠转换为双斜杠了。转换之后反而不是有效路径了。
#6
Replace 替换一下就可以了。
转义用的。
转义用的。