Думал вот так должно работать:
CString path_string = folder1_string + "\\" + folder2_string;
но вместо одного слэша, там прибавляется 2 слэша.
Скажите как прибавить слэш?
Re: Как заменить слэш?
От:
Аноним
Дата:
10.07.06 14:35
Оценка:
Здравствуйте, khatsko, Вы писали:
K>Думал вот так должно работать: K>CString path_string = folder1_string + "\\" + folder2_string; K>но вместо одного слэша, там прибавляется 2 слэша.
Все правильно, просто у тебя скорее всего посл символ в folder1_string (или первый в folder2_string) тот самый слеш
Здравствуйте, khatsko, Вы писали:
K>Думал вот так должно работать: K>CString path_string = folder1_string + "\\" + folder2_string; K>но вместо одного слэша, там прибавляется 2 слэша. K>Скажите как прибавить слэш?
Здравствуйте, khatsko, Вы писали:
K>Думал вот так должно работать: K>CString path_string = folder1_string + "\\" + folder2_string; K>но вместо одного слэша, там прибавляется 2 слэша.
K>Скажите как прибавить слэш?
Здравствуйте, khatsko, Вы писали:
K>>Думал вот так должно работать: K>>CString path_string = folder1_string + "\\" + folder2_string; K>>но вместо одного слэша, там прибавляется 2 слэша. K>>Скажите как прибавить слэш?
Здравствуйте, khatsko, Вы писали:
K>Скажите как прибавить слэш?
Общая идея:
CString ConcatPaths(const CString& s1, const CString& s2)
{
TCHAR const cSlash = _T('\\');
if(s1.IsEmpty() || s2.IsEmpty())
return s1+s2;
else if(s1[s1.GetLength()-1]==cSlash && s2[0]==cSlash) // есть и концевой, и начальный слэш, нужно оставить только одинreturn s1+s2.Mid(1);
else if(s1[s1.GetLength()-1]==cSlash || s2[0]==cSlash) // есть единственный слэшreturn s1+s2;
else// нет слэшей, нужно вставитьreturn s1+cSlash+s2;
}
Способы конкатенации (+, +=, Format) могут варьироваться — в угоду выразительности и производительности.
Здравствуйте, khatsko, Вы писали:
K>Подскажите как заменить слэш в такой конструкции:
K>CString path_string = folder1_string + "\" + folder2_string;
K>Компилятор (MSVC 2003) ругается:
K>c:\Projects\file.cpp(262): error C2001: newline in constant
Правильно, потому что у тебя получилась не закрытая строка -- вторые кавычки вместо того, чтобы ограничить строку были в неё добавлены..
K>И так тоже:
K>CString path_string = folder1_string + '\' + folder2_string;
То же самое.
K>Думал вот так должно работать: K>CString path_string = folder1_string + "\\" + folder2_string; K>но вместо одного слэша, там прибавляется 2 слэша.
А это ты врёшь. Скорее всего, у тебя первый путь уже заканчивался на \.
Здравствуйте, khatsko, Вы писали:
K>Думал вот так должно работать: K>CString path_string = folder1_string + "\\" + folder2_string; K>но вместо одного слэша, там прибавляется 2 слэша.
Это дебаггер в виде двух слэшей выводит
Здравствуйте, khatsko, Вы писали:
K>Думал вот так должно работать: K>CString path_string = folder1_string + "\\" + folder2_string; K>но вместо одного слэша, там прибавляется 2 слэша.
K>Скажите как прибавить слэш?
Что бы не было этих двойных слэшей я такую функцию использую: