我试图弄清楚这个问题及其困扰了我很长时间。
当我键入:inFile.open("C:\Users\Mark\Desktop\text.txt", ios::in | ios:: binary);
它工作正常。
但是当我做这样的事情时。 string garbage = "\\";
srcLoc = ofn.lpstrFile; // this is: C:\Users\Mark\Desktop\text.txt
// This for loop inserts "\\"
for(int i = 0; i < srcLoc.length(); i++)
{
switch(srcLoc[i])
{
case '\\':
srcLoc.insert(i, garbage);
i++;
break;
}
}
// Now string srcLoc looks like: C:\\Users\Mark\\Desktop\\text.txt
inFile.open(srcLoc.c_str(), ios::in | ios:: binary);
// But it wont work
if(inFile)
{
while(!inFile.eof())
{
getline(inFile, tekst);
SendMessage(hTextBox, EM_REPLACESEL, 0, (LPARAM)tekst.c_str());
SendMessage(hTextBox, EM_REPLACESEL, 0, (LPARAM)"\r\n");
}
}
else
{
MessageBox(0, srcLoc.c_str(), "Could not load", MB_ICONWARNING | MB_OK);
}
inFile.close();
我得到的是MessageBox至少无法“工作” :)任何人都知道我所缺少的吗?
最佳答案
在源代码的字符串中使用反斜杠时,需要将其加倍。编译器会将源代码中的每个双反斜杠转换为程序使用的字符串中的单个源代码。当您读取运行时传入的字符串时,无需将反斜杠加倍。