Разъяснение по преобразованию 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, в котором говорится, что ни один экземпляр конструктора не соответствует списку аргументов. Я уже импортировал строку.

Вот документация для строки: в. Я в замешательстве, потому что я думаю, что я делаю это правильно?

http://www.cplusplus.com/reference/string/string/at/

3 ответа

Решение

Ошибка касается вызова на добавление, она должна быть:

newpath.append(1, path.at(i));

std::string не имеет конструктора, который использует char& в качестве аргумента. Звонок должен быть:

string someString( 1,  path.at(i) );

Добавление отдельных символов идиоматически выполняется с помощью += оператор:

newpath += path.at(i);
Другие вопросы по тегам