Разъяснение по преобразованию char в строку с помощью string::at
Поэтому я хочу преобразовать каждый экземпляр \ в \\ для использования в функции, которая создает каталоги.
string stripPath(string path)
{
string newpath;
for (int i = 0; i <= path.length() ;i++)
{
if(path.at(i) == '\\')
{
string someString( path.at(i) );
newpath.append(path.at(i));
newpath.append(path.at(i));
}
else
newpath.append(path.at(i));
}
return newpath;
}
newpath.append нужна строка, поэтому я пытаюсь создать строку из path.at(i). Я получаю сообщение об ошибке в Visual Studio, в котором говорится, что ни один экземпляр конструктора не соответствует списку аргументов. Я уже импортировал строку.
Вот документация для строки: в. Я в замешательстве, потому что я думаю, что я делаю это правильно?
3 ответа
Решение
Ошибка касается вызова на добавление, она должна быть:
newpath.append(1, path.at(i));
std::string
не имеет конструктора, который использует char&
в качестве аргумента. Звонок должен быть:
string someString( 1, path.at(i) );
Добавление отдельных символов идиоматически выполняется с помощью +=
оператор:
newpath += path.at(i);