Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088

Visual C++ 7.0 и std::string

28.11.2012, 19:54. Показов 1279. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот...
создал новый проект...

народ подскажите проблема в моей голове или в visual-e?

на gcc всё работает как положено.

как с этим бороться?

среда visual studio 2002( перейти на более новую не могу)
Миниатюры
Visual C++ 7.0 и std::string  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2012, 19:54
Ответы с готовыми решениями:

Сравнение CString и std::string
CString orig; string s = { "one", "two", "three", "four", "five", "six", ...

Получить из CString обычную std::string
Есть приложение на с++ написанное мной и взведённое на использование string (несмотря на то что там русский текст). Так вот теперь нужно...

Как преобразовать std::string в LPCTSTR?
Вопрос задан в названии темы.

13
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
29.11.2012, 11:06  [ТС]
короче строка по ходу не может длиной больше 15 символов в этой реализации std::string(+добавляется символ конца строки)

Добавлено через 1 час 13 минут
C++
1
const char *srt = nameTableCompVal.c_str();
если выполнить такое преобразование то в srt окажется "COMPONENTSVALUES"

Добавлено через 20 минут
по ходу это только в дебагере неправильно отображается
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
29.11.2012, 11:49
Это проблема дебаггера..... Зависит от реализации std::string.
Судя по всему, в имеющейся у тебя реализации (VC++ 7.0) "короткие" строки - не более 16 символов, включая завершающий '\0' - хранятся непосредственно в теле объекта; более длинные - в динамическом буфере, а в теле объекта хранится указатель на этот буфер.
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.12.2012, 22:42
Цитата Сообщение от XRuZzz Посмотреть сообщение
C++
1
const char *srt = nameTableCompVal.c_str();
Ну так попросту делать нельзя...
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
04.12.2012, 14:21  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ну так попросту делать нельзя...
C++
1
char *colorPtr = "синий";
а так можно?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.12.2012, 19:15
Нет...
Память то кто выделять будет?

Добавлено через 38 секунд
C++
1
char colorPtr[] = "синий";
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
05.12.2012, 10:04  [ТС]
ну напишите тогда об этом Дейтелу по адресу deitel@deitel.com, что у него в 8-ом издании "C++ How to program" на 819 странице ошибка

C++
1
2
3
4
5
6
7
8
9
10
// Fig. 21.24: fig21_24.cpp
// Using strcmp and strncmp.
#include <iostream>
#include <iomanip>
#include <cstring> // prototypes for strcmp and strncmp
using namespace std;
 
int main()
{
char *s1 = "Happy New Year";
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
05.12.2012, 11:22
У него действительно ошибка. Должно быть
C++
1
const char *s1 = "Happy New Year";
Правда, большинство компиляторов в целях совместимости со старым, как экскременты мамонта, кодом - допускают и без const. Но вот писать так в новых книжках и учить этому начинающих программистов - неверно.
1
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
05.12.2012, 11:42  [ТС]
хотелось бы увидеть цитаты из стандарта
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.12.2012, 11:59
Цитата Сообщение от XRuZzz Посмотреть сообщение
сonst char *srt = nameTableCompVal.c_str();
Суть в том что вы во внутренности string лезите что не хорошо...
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
05.12.2012, 12:28
Цитата Сообщение от XRuZzz Посмотреть сообщение
хотелось бы увидеть цитаты из стандарта
Да с удовольствием :-) 2.14.5, clauses 8-11.
1
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
05.12.2012, 12:30  [ТС]
Document Number: N3376
Date: 2012-02-28
Revises: N3337
Reply to: Stefanus Du Toit Intel Corporation
cxxeditor@gmail.com
Working Draft, Standard for Programming
Language C++
Subclause 2.14.5:
Change: String literals made const
The type of a string literal is changed from “array of char” to “array of const char.” The type of a
char16_t string literal is changed from “array of some-integer-type” to “array of const char16_t.” The
type of a char32_t string literal is changed from “array of some-integer-type” to “array of const char32_t.”
The type of a wide string literal is changed from “array of wchar_t” to “array of const wchar_t.”
Rationale: This avoids calling an inappropriate overloaded function, which might expect to be able to
modify its argument.
Effect on original feature: Change to semantics of well-defined feature.
Difficulty of converting: Syntactic transformation. The fix is to add a cast:
C++
1
2
3
4
5
6
char* p = "abc"; // valid in C, invalid in C++
void f(char*) {
char* p = (char*)"abc"; // OK: cast added
f(p);
f((char*)"def"); // OK: cast added
}
Суть в том что вы во внутренности string лезите что не хорошо...
не понимаю, что я при этом теряю, или чем это грозит
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.12.2012, 12:38
Ну к примеру string выйдет из области видимости, а указатель нет ...
1
05.12.2012, 12:45  [ТС]

Не по теме:

я надеюсь когда он сделает, меня уже не будет на этой работе :D

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2012, 12:45
Помогаю со студенческими работами здесь

Не могу разобраться как обновить в std::map<std::string, вектор_структур>
Не могу разобраться как обновить вектор структур после его добавления в map без удаления и перезаписи struct pStruct { int...

std::string, std::fstream, ошибка кучи
где то начало вылетать при операции += с локальной переменной std::string. Заменил на свой qString. Замечательно, то же самое... ошибка при...

из Visual 6.0 к MS Visual Std 2008
Подскажите я начал не много изучать C++ но писал до сех пор на VC 6.0 а ща устоновил MS Visual Std 2008 ни как там не могу 1 программу...

Файловый поток и std::string
добрый день сейчас меня немножко ввело в тупняк - из файлового потока(ifstream) нельзя прочитать по словам типа std::string? только char*...

Немного про std::string
Привет, читал про std::string на разных сайтах. 1. Там говорят, С++ 11 гарантирует, что std::string будет stored contiguously in...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru