Работа со строками под C++ Net 2003

Тема в разделе "Общие вопросы по С и С++", создана пользователем eugira, 2 фев 2007.

  1. eugira

    eugira Member

    Регистрация:
    2 фев 2007
    Сообщения:
    14
    Симпатии:
    0
    (язык проекта C++ не C# тип проекта Console Application
    1)Работа с типом String в C++ NET
    Следующий код в C++ NET не работает
    (выполняется, но печатаются 2 одинак строки, т.е .замены символа не происходит)
    String *psl = S"Hello HHH"; // Строка "Привет, Мир"
    String *ps2 = psl->Replace('Н', 'a'); // Замена
    Console::WriteLine(psl);
    Console::WriteLine(ps2);
    В связи с чем вопрос как вообще работвть со строками не с char *
    а со строковым типом String (который как MSDN позиционирует) поддерживается
    не только в C# но и в C++
    Или может это - управляемый объект, с которым может работать только C#?

    2)Возможно ли в С++ NET (язык проекта C++ не C#) работать с классом StringBuilder?
    При наличии using System
    Вызов конструктора String * s= new String(S"Hello World");
    Не вызывает ошибки а yf вызов ниже:
    StringBuilder * psbl = new StringBuilder(S"Hello World"); /
    Компилятор говориnтчто нет такого типа
    И действительно его нет в списке при наборе System::StringBuilder::

    3) Аналогичный вопрос про использование метода PARSE
    Фишка типа
    double a = double::parse( Console :: ReadLine ());
    не проходит в C++
    если набрать double:: то в списке не видно Parse
    в то же время в MSDN говорится что он есть для C++ и для C#
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Полная мешанина С++ и C#. В "чистом" С++ вместо char* лучше использовать std::string
     
  3. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Не понятно, что хочет автор вопроса:
    1 - использовать чистый С++
    2 - использовать фреймворк и писать на С++
    По поводу первого я уже ответил, если второе, то тип проекта должен быть "CLR Console Application"

    P.S. Что-то торможу: перечитал пост еще раз и сам понял :)
     
  4. eugira

    eugira Member

    Регистрация:
    2 фев 2007
    Сообщения:
    14
    Симпатии:
    0
    Да действительно по 1 вопросу
    String * psl = "Нell Нello";
    //замена не будет работать, ошибки компилятор не дает т.е одиночные кавычки
    String * ps2 = psl->Replace('Н', 'a');
    но код String * ps2 = psl->Replace("Н", "a"); //действительно работает


    Проект действительно типа CLR Console Application
    Но я хочу в нем работать со строками не только char * (0-терминированными) как в станд С++
    а с классами String и StringReader как это позиционировано в MSDN NET - не удается
    Даже совсем стандартные приемы C++ типа
    char * s="Hello World "; char * s1=" my";
    strcat(s," EUG");
    //Console::WriteLine(s); //вызывает ошибку видимо из=за аргумента не const char * а String
    printf("\n%s",s); //тоже валится но не понятно почему
     
  5. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-Е.Багоцкий+2:02:2007, 13:10 -->
    <span class="vbquote">(Е.Багоцкий @ 2:02:2007, 13:10 )</span><!--QuoteEBegin-->Но я хочу в нем работать со строками не только char * (0-терминированными) как в станд С++
    а с классами String и StringReader как это позиционировано в MSDN NET
    [snapback]54832" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Я только не понимаю зачем работать с 2-мя типами строк? Это потенциальный источник ошибок
    <!--QuoteBegin-Е.Багоцкий+2:02:2007, 13:10 -->
    <span class="vbquote">(Е.Багоцкий @ 2:02:2007, 13:10 )</span><!--QuoteEBegin-->printf("\n%s",s); //тоже валится но не понятно почему
    [snapback]54832" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Валится на строку раньше, так как в s недостаточно зарезервировано памяти для добавления еще 4-х символов
     
  6. 62316e

    62316e Гость

    Да, возможно. System::Text::StringBuilder


    И что ты хотел сказать буквами "yf" в "Не вызывает ошибки а yf вызов ниже:"
    Код (Text):
        String *psl = "Hello HHH";
    String *ps2 = psl->Replace('Н', 'a'); //Странно, но мой код не работает...
    String *ps3 = psl->Replace('H', 'a'); //Ммм.. а этот работает. неужели это поганый MSDN?
    Console::WriteLine(psl);
    Console::WriteLine(ps2);
    Console::WriteLine(ps3);
    Найди 10 различий!

    Что бы делать такие "фишки" желательно хотябы знать как MSDN открывать.
    double a = a.Parse( Console :: ReadLine ());
     
Загрузка...
Похожие Темы - Работа со строками
  1. alexas1
    Ответов:
    1
    Просмотров:
    451
  2. shkeat
    Ответов:
    1
    Просмотров:
    1.681
  3. NickProstoNick
    Ответов:
    1
    Просмотров:
    2.306
  4. KiR
    Ответов:
    7
    Просмотров:
    9.453
  5. gx6060
    Ответов:
    2
    Просмотров:
    423

Поделиться этой страницей