Подскажите, пожалуйста, как в С++ перевести из int в string и наоборот.
Так тебе надо Число -> Строка или наоборот? У тебя в сообщении и в заголовке разные вещи написаны...
Число -> Строка: зависит от компилятора... Если MS, то _itoa/_ltoa/_ultoa (для целочисленных типов) _ecvt/_fcvt/_gcvt (для вещественных) или воспользоваться возможностями sprintf и "впечатать" число в строку, завершив ее нулем:
sprintf(s, "%7.2f\0", value);
Компилятор у меня MinGW Developer Studio. Мне нужно перевести и из строкового в целочисленный, и обратно.
Вот например у меня есть строковая переменная s, мне нужно ее записать в целочисленную переменную.
делаю
m=atoi(s1);
Выдает ошибку
cannot convert `std::string' to `int' for argument `1' to `char* itoa(int, char*, int)'
...
char *s = "187"; // Исходная строка
char buffer[128] = "\0"; // Место под ПЕРЕконвертированную из int строку
int val = atoi(s); // строка -> число
itoa(val, buffer, 10); // число -> строка
...
А я ее как string объявлял...
Если мне нужно из строковой переменной взять только первые 2 символа?
Значит, скопируй первые 2 символа в промежуточный буфер и их конвертируй (я использовал переменную buffer, чтоб не вводить еще одну, все равно потом результат конвертации число -> строка запишется туда же...):
int val = atoi(strncpy(buffer, s, 2));
itoa(val + 10, buffer, 10); // +10 чтобы было видно, что действительно происходит конвертация
Компилируется, запускается, а потом ругается...
char buffer[128] = "\0";
char *s;
int m=atoi(strncpy(buffer, s, 2));
Во-первых, КАК ругается? Во-вторых, у тебя s не инициализирован, посмотри пост №4...
если инициализирую при описани переменной все нормально, а если считываю из файла - завершает работу и возвращает кодом -1073741819.
Но, наверно я не правильно считываю...
f_in>>s;
Нет, так нельзя... Если ты пишешь
char *s = "123";
char *s;, то указатель-то есть, а вот строки нет. И при попытке обращения "в никуда" будет ошибка. Выделяй место под строку в таком случае:
char s[20];должно работать...
...
f >> s;
Понял, это поучилось.
А как можно "вырезать" например 2 символа начиная с какой-то позиции(например 3);
int m=atoi(strncpy(buffer, s, 2));
Чтобы начиная с третьего символа скопировать 2 (нулевой, первый и второй - три символа - должны быть пропущены, то есть, s должно быть увеличено на 3):
int val = atoi(strncpy(buffer, s + 3, 2));
int val = atoi(strncpy(buffer, strstr(s, ":") + 1, 2));
Огромное спасибо!