C ++ Очистка строки

0

Моя проблема заключается в том, что ни один метод, используемый для работы с строкой, не работает на wstring. Поэтому я спрашиваю, как я могу легко очистить wstring для эстетической цели.

Мой код прямо сейчас:

    while (!foundRightOne)
    {
        wstring cTitle;
        ForegroundWindow = GetForegroundWindow();
        cout << "FRGW  " << ForegroundWindow << endl;

        int len = GetWindowTextLengthW(ForegroundWindow) + 1;
        wchar_t * windowTitle = new wchar_t[len];
        GetWindowTextW(ForegroundWindow, windowTitle, len);
        title += windowTitle;
        // OUTPUT
        cTitle = L"Title: ";
        cTitle += title;
        wcout << cTitle << endl;
        cTitle = ' ';
        //OUTPUT
        keyPress = getchar();
        system("CLS");
        if (keyPress == 'y' || keyPress == 'Y')
        {
            foundRightOne = true;
        }

    }

В основном это циклы, пока я cTitle y или Y, я cTitle когда вижу правильный cTitle и после ~ 20 циклов cTitle получает полностью заполненный текст из последних циклов.

  • 0
    std::string и std::wstring абсолютно одинаковы, за исключением того типа символов, который они хранят. В любом случае, пробел не является очищенной строкой, а символьный литерал не является широким символом, очень похоже на то, как строковый литерал не является широкой строкой.
  • 0
    Код не является контрольным примером. Пожалуйста, дайте определение «название»
Теги:
wstring

1 ответ

1
Лучший ответ

std::wstring::clear должен работать, поскольку и он, и std::string являются std::basic_string s. Проверьте документацию std :: basic_string, если у вас возникли проблемы.

#include <iostream>

int main()
{
    std::string regularString("regular string!");
    std::wstring wideString(L"wide string!");

    std::cout << regularString << std::endl << "size: " << regularString.size() << std::endl;
    std::wcout << wideString << std::endl << "size: " << wideString.size() << std::endl;

    regularString.clear();
    wideString.clear();

    std::cout << regularString << std::endl << "size: " << regularString.size() << std::endl;
    std::wcout << wideString << std::endl << "size: " << wideString.size() << std::endl;
}

Вывод:

regular string!
size: 15
wide string!
size: 12

size: 0

size: 0

Вот идеонная ссылка на этот код.

  • 0
    Благодарю. Теперь я действительно запутался. После проверки size () он говорит 0, но он все еще выводит СТАРЫЕ заголовки. [ссылка] i.imgur.com/W52gvIM.png - Скриншот
  • 0
    @Ufonautas вы пытались установить пустую строку? cTitle = "" или повторно инициализировать его с помощью cTitle = std::wstring()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню