将符号分配给char或string不正确

时间:2012-05-16 16:04:42

标签: c++

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 *
当我将其分配给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";

3 个答案:

答案 0 :(得分:4)

尝试:

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

在C ++源代码中,\符号修改字符串中下一个符号的含义。 \t,例如“水平标签”,而\n表示“新线”。

要插入实际的\字符,您必须输入\\

答案 1 :(得分:1)

你的问题很难理解,但从我看到的你并没有逃避你的反斜杠。

使用

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

答案 2 :(得分:1)

在C ++(和C语言)中,在字符串和字符文字中,反斜杠是一个 “逃避性格”;这意味着它不代表自己,但是 发出以下内容的信号(通常是下一个字符,但有时候 更多)具有特殊意义。从而。从你的字符串,两个字符 字符串或字符文字中的序列"\a"表示字符 生成一个声音警报,BEL字符(大多数编码为0x07)。 当然,您几乎肯定会看到"\n"换新行 字符,以及引号字符的"\"";标签为"\t" 性格也很频繁。

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

最后:您的文字看起来像Windows文件名。在这种情况下,你是 最好使用'/'作为目录分隔符;如果没有 否则,键入和阅读会更容易,因为您不需要使用 一个逃脱序列。出于显示目的,如果您担心 使非编程用户感到困惑(他们可能不知道/\ 在Windows下工作),快速通过std::replace将修复 显示字符串。