Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/154: Рейтинг темы: голосов - 154, средняя оценка - 4.77
2 / 2 / 0
Регистрация: 03.04.2009
Сообщений: 44

Из char в String

05.04.2009, 16:10. Показов 30941. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся с проблемой преобразования сабжа.
Вот кусочек кода:
C++
1
2
3
4
5
6
7
8
9
10
11
...
using namespace System;
...
 
char ch;
String^ str="";
FILE *fp; //открываю поток
fp = fopen("file.txt", "r"); //открываю файл в потоке
ch = getc(fp); //вытаскиваю символ из файла
str=str+Convert::ToString(ch); //прибавляю к строке этот символ
...
в итоге получается в строке не символ, а его числовой код.
То есть, если в файле символ 'o', то в итоге стринг выдает "111"
Подскажите, пожалуйста, как правильно выполнить преобразование?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2009, 16:10
Ответы с готовыми решениями:

Подскажите, пожалуйста, как преобразовать данные из excel в string или в char*, char perm [] в visual c++
Подскажите, пожалуйста, как преобразовать данные из excel в string или в char*, char perm также для вывода на экран среда visual c++ ...

string to char*
Вопрос в следующем. У меня есть openFileDialog1. При его открытии мне нужно узнать путь файла и передать его в переменную типа char*. ...

Строка string в unsigned char
Добрый день. Есть строка string с неким перечислением символов, надо его разобрать и передать в unsigned char, делаю вот так: ...

10
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
05.04.2009, 16:32
convert воспринимает твой символ как 8-битное число. пищи просто str+=ch;
0
2 / 2 / 0
Регистрация: 03.04.2009
Сообщений: 44
05.04.2009, 16:38  [ТС]
К сожалению, все равно не работает
0
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
05.04.2009, 16:49
па-пааам
C++
1
2
3
char y = 'a';
String^ x= gcnew  String(&y,0,1);
MessageBox::Show(x);
выводит "а"

то есть я получил строку из символа. ну а дальше ее уже просто конкатировать
0
2 / 2 / 0
Регистрация: 03.04.2009
Сообщений: 44
05.04.2009, 16:56  [ТС]
мм, а если необходимо затем накапливать в стринге символы? как это реализовать?
0
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
05.04.2009, 17:00
а сам не догадаешься??

C++
1
2
3
4
5
6
7
String^ str = gcnew String("");//будем накапливать сюда
 
 
char y = 'a';
String^ x= gcnew  String(&y,0,1);
 
str+=x; //теперь-то х - тоже типа String!
самое главное, сам же писал примерно такое в первом сообщении!!
0
2 / 2 / 0
Регистрация: 03.04.2009
Сообщений: 44
05.04.2009, 17:10  [ТС]
Не кипятитесь, я пробовал запихнуть в цикл. В итоге работало некорректно.

C++
1
2
3
4
5
6
7
char c;
String ^str=gcnew String(&c,0,1);
 
while((c=getc(fp)) != '=')
{
       str+=c;
}
0
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
05.04.2009, 17:27
блин.. не так%) ладно, сам виноват, над было понятнее объяснять...

C++
1
String^ x= gcnew  String(&c,0,1);
создает новый объект типа String, которому присваивается начальное значение. смотри описание прототипа конструктора
C++
1
String(char *value, int startIndex,  int length);
я указываю в качестве СТРОКИ value указатель на символ, и копирую в качестве начального переменной Х значения 1 символ начиная с 0го индекса из строки &y. На самом-то деле &y конечно не определяет строку, это только указатель на символ, но мы и копируем 1 символ. это, конечно, читерство в некотором роде=)

так вот это я все к чему - каждый раз, когда мы считали новый символ, мы должны для него сделать СВОЮ строку командой
C++
1
String^ x= gcnew  String(&c,0,1);
. Этот кусок кода тоже надо внести в цикл!! и смотри внимательно, у тебя написано
C++
1
str+=c;
, а должно быть
C++
1
String^ x= gcnew  String(&с,0,1); str+=x;
1
2 / 2 / 0
Регистрация: 03.04.2009
Сообщений: 44
05.04.2009, 17:32  [ТС]
спасибо, теперь я разобрался=)
работает
0
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
05.04.2009, 17:40
З.Ы. вообще, вся эта кучерявость решения получается из-за того, что ты смешиваешь в одной программе разные модели программирования. функция, с помощью которой ты вытаскиваешь символ из файла, была написано году эдак в 75, а класс String был создан Microsoft году эдак в 2002. Это совершенно разные концепции программирования. Это все равно что использовать для компа вместо монитора телевизор РАДУГА=)) так что советую или поучить еще .NET (класс String, это же часть .NET)и узнать, как читать файлы с помощью .NET, или вообще отказаться от этих объектов и пользоваться чистым С
0
0 / 0 / 0
Регистрация: 09.09.2010
Сообщений: 6
21.09.2010, 11:22
BrainDamaged, не подскажеш ?

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
26
27
28
29
30
31
#include "stdafx.h"
#include <iostream>
#include"windows.h"
#include <stdio.h>
#include <conio.h>
using namespace std;
void exchange(char *str)
{
    setlocale (0,"");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char string[1251];
    int len = strlen(str);
    int i;
    
    for (i = 0; i < len; i++)
        if (str[i] == 'А'){
            str[i] = '5';
            str[i+1]= '6';}
}
int main()
{
    char str[] = "АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЪЫЬЭЮЯ";
    
    exchange(str);
    
    printf("%s", str);
    
    getch();
    return 0;
}
мне нужно чтоб он не те синволы каторые заменял которые в char str[] = "АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЪЫЬЭЮЯ"; а те которые я введу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.09.2010, 11:22
Помогаю со студенческими работами здесь

C++ как сравнить кавычки с char и string
В общем, приведу лучше кусочек кода, так понятнее будет) switch (buff){ case '&quot;': \\тут внутри одинарных кавычек двойная ...

есть массив char. есть строка string. как присвоить значению string-a значение char-a?
есть массив char. есть строка string. как присвоить значению string-a значение char-a?

Передача в функцию char*([Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings])
Почему компилятор на это матерится? ObjA.Show(&quot;A&quot;); deprecated conversion from string constant to 'char*' #include &lt;iostream&gt;...

Строка: чем отличается строки string, char, char*?
Помогите разобраться,совсем плохо идёт,чем отличается строки string,char,char* И если можно пару примеров Буду весьма признательна

Как преобразовать char* в string и вывести переменную string на экран?
for (int k = 0; k &lt; 10; k++) { int x = (int)rand() / RAND_MAX + rand() % 6 + 2; char *chars = new char; ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru