Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
exkilla
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 73
#1

Проблема с объектом string - C++

26.07.2011, 09:29. Просмотров 1418. Ответов 8
Метки нет (Все метки)

Всем привет! Таким образом передаю текст объекту string:
C++
1
2
3
4
string str ;
sscanf( "cyberforum.ru", "%s" , str.data() );
cout << "string -> " << str.c_str() << endl;
cout << "length -> " << str.length() << endl;
В результате получаю вывод:

string -> cyberforum.ru
length -> 0

Если в качестве текста использовать www.cyberforum.ru, а не cyberforum.ru, то получаю:

string -> www.cyberforum.ru
length -> 117

Подскажите пожалуйста, почему получаю неадекватную длину строки? Каким образом можно обойти этот неприятный момент?

P.S. Использую VS2010.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2011, 09:29     Проблема с объектом string
Посмотрите здесь:

Задача на строки, с объектом класса string - C++
Дано осмысленное текстовое сообщение, разделенное пробелами и знаками препинания, в конце ставится точка. Поменять слова в сообщении по...

проблема с методом double to string - C++
Приветствую! Возникла проблема с преобразованием long double в string. Если понадобится я выложу весь код. void convStr(long double...

Структура и класс string. Проблема с выводом строки. - C++
Такая проблема: объявляю структуру с классом string: struct exam { std::string name; ... }; Затем объявляю...

Здравствуйте! Создал класс std::string. Не создается объкт типа string... Подскажите в чем причина? - C++
#include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;string.h&gt; //using namespace std; class string { private: int...

Работа с объектом. - C++
Вот код: struct time { int hours; int mituts; } class pet {

сохранение/чтение map<string,string*> в файл - C++
Доброго времени суток, Нужно сделать БД для индексации содержимого текстовых файлов, сначала решил, что все просто: читаем файл и...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
26.07.2011, 09:35     Проблема с объектом string #2
exkilla, Не извращаться с sscanf а записывать нормально в строчку...
oxotnik
1589 / 1066 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
26.07.2011, 09:36     Проблема с объектом string #3
const char* data() const;
The returned array points to an internal location which should not be modified directly in the program.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
26.07.2011, 09:37     Проблема с объектом string #4
C++
1
const char* data() const;
А теперь подумайте куда вы пишите.
exkilla
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 73
26.07.2011, 09:50  [ТС]     Проблема с объектом string #5
Спасибо ForEveR и oxotnik

Тогда подскажите пожалуйста, каким образом лучше всего поместить первое слово(text1) в t1, а второе(text2) в t2? Слова разделены двоеточием.

C++
1
2
string t1, t2;
string str("text1 : text2");
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
26.07.2011, 10:07     Проблема с объектом string #6
Может, коряво, но все же:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
int main()
{
    std::string MainLine ( "text1 : text2" ), FirstWord, SecondWord;
 
    FirstWord  = MainLine.substr ( 0, MainLine.find ( " :" ) );
    SecondWord = MainLine.substr ( MainLine.find ( ": " ) + 2, MainLine.length() );
 
    std::cout << FirstWord << std::endl << SecondWord << std::endl;
 
    std::cin.get();
    return 0;
}
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
26.07.2011, 10:27     Проблема с объектом string #7
C++
1
2
3
4
5
6
std::string line = "text1:text2");
std::vector<std::string> vec;
boost::split(vec, line, boost::is_any_of(";"), boost::token_compess_on);
std::string first = vec.at(0);
std::string second = vec.at(1);
std::cout << first << ' ' << second << '\n';
iama
1249 / 974 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
26.07.2011, 10:38     Проблема с объектом string #8
C++
1
2
3
4
5
6
7
    string str1, str2;
    char s1[100], s2[100];
 
    sscanf("cyberforum ; ru", "%s ; %s", s1, s2);
    str1 = s1; str2 = s2;
 
    cout << str1 << ' ' << str2 << endl;
Или если вам так хочется заюзать sscanf... Но, подозреваю, что так делать не нужно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2011, 16:19     Проблема с объектом string
Еще ссылки по теме:

Синхронная работа с объектом - C++
Здравствуйте. Возможно ли работать с объектом одновременно в нескольких функциях/процессах, имея его адрес в динамической памяти? Если да,...

Возвращение объектом значения - C++
Привет всем. Работал я тут на днях с классом fstream и увидал классную штуку, скажем: .... fstream file; ...

'string' : undeclared identifier, std::string - C++
#include &lt;regex&gt; #include &lt;string&gt; #include &lt;vector&gt; std::vector&lt;string&gt; Tokenize( const string str, const std::regex regex ) { ...

Сравнение string::iterator со string::reverse_iterator - C++
Уважаемые форумчане, подскажите пожалуйста, как можно сравнить string::iterator и string::reverse_iterator, в частности что бы определить,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
26.07.2011, 16:19     Проблема с объектом string #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <sstream>
#include <string>
#include <locale>
#include <cstddef>
 
int main()
{
    typedef std::ctype<char> Ctype;
 
    Ctype::mask table[Ctype::table_size] = { Ctype::mask() };
    table[static_cast<std::size_t>(' ')] = Ctype::space;
    table[static_cast<std::size_t>(':')] = Ctype::space;
 
    std::string str = "text1 : text2";
    std::istringstream stream(str);
    stream.imbue(std::locale(stream.getloc(), new Ctype(table)));
 
    std::string t1, t2;
    stream >> t1 >> t2;
 
    std::cout << t1 << '\n' << t2 << '\n';
 
    return 0;
}
Yandex
Объявления
26.07.2011, 16:19     Проблема с объектом string
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru