-3
A="D:\Kursa4\a1\a1\test1.txt";
B="D:\Kursa4\a1\a1\test1.txt";
+ A "D:Kursa411 est1.txt" std::basic_string,std::allocator >

+ B 0x0046cd0c "D:Kursa411 est1.txt" 字符 *

当我将它分配给 char 或 string 时,'\' 符号未更正。我需要将 '\' 替换为 '/' - 但是当我写 '\' - 表示下面的文本

我以这种格式读取文件的名称。并想将 \ 替换为 /

ZeroMemory(&of, sizeof(OPENFILENAME));
    of.lStructSize = sizeof( OPENFILENAME );
    of.Flags = OFN_FILEMUSTEXIST| OFN_EXPLORER | OFN_ENABLESIZING; 
    of.lCustData = (DWORD) NULL;
    //of.hwndOwner = hWnd; 
    of.lpstrFilter = L"*.*";
    of.lpstrFile = (LPWSTR)fsFile;
    of.nMaxFile = sizeof(fsFile);
    of.nFilterIndex = 1;
    of.lpstrFileTitle = NULL;
    of.nMaxFileTitle = 0;
    if(GetOpenFileName(&of) == TRUE)
    {
    //IDC_EDIT1
    //HWND hwndEdit1 = GetDlgItem(hWnd,IDC_RADIO1);
    SetWindowText(hwndEdit1, (LPCWSTR)fsFile);
    }

我想从“D:/Kursa4/a1/a1/test.txt”制作“D:\Kursa4\a1\a1\test1.txt”

char B = "D:/Kursa4/a1/a1/test.txt";

自制?

 char B = "D:\Kursa4\a1\a1\test1.txt";
4

3 回答 3

4

尝试:

A="D:\\Kursa4\\a1\\a1\\test1.txt";
B="D:\\Kursa4\\a1\\a1\\test1.txt";

在 C++ 源代码中,\符号修改字符串中下一个符号的含义。\t,例如表示“水平选项卡”,而\n表示“换行符”。

要插入实际\字符,您必须键入\\.

于 2012-05-16T16:06:48.653 回答
1

您的问题很难理解,但据我所知,您并没有逃脱反斜杠。

采用

A="D:\\Kursa4\\a1\\a1\\test1.txt";
于 2012-05-16T16:06:57.237 回答
1

在 C++(和 C)中,在字符串和字符文字中,反斜杠是“转义字符”;这意味着它不代表自己,而是表明后面的内容(通常是下一个字符,但有时更多)具有特殊含义。因此。从您的字符串中,字符串或字符文字中的两个字符序列"\a"表示产生声音警报的字符,即 BEL 字符(大多数编码中的 0x07)。当然,您几乎肯定已经看到"\n"了换行符和"\""引号字符;"\t"对于制表符也很常见。

这就产生了问题:如何在字符串文字中插入反斜杠。答案是:就像我们插入其他不能直接指定的字符一样:使用转义序列。在这种情况下, "\\"

最后:您的文本看起来像一个 Windows 文件名。在这种情况下,您最好使用'/'目录分隔符;如果不出意外,输入和阅读要容易得多,因为您不需要使用转义序列。出于显示目的,如果您担心会混淆非编程用户(他们可能不知道这两者/并且\ 在 Windows 下工作),快速通过std::replace将修复显示字符串。

于 2012-05-16T16:16:20.373 回答