2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 ошибка сцепления строк С++
Сообщение05.10.2013, 15:20 


22/06/12
417
добрый вечер! Возникла проблема в программе:

Код:
string str="D:\\Tab"+n+".txt"

подчеркивает ".txt" красным и говорит:"выражение должно быть целочисленным или перечисляемым".
n - переменная типа int, str - строка (string), которая в последствие становится именем файла.
Подскажите, пожалуйста, есть ли другие хорошие способы сцепления строк?

 Профиль  
                  
 
 Re: ошибка сцепления строк С++
Сообщение05.10.2013, 15:32 
Заслуженный участник


27/04/09
28128
Преобразуйте сначала n в строку. А если в стандартной библиотеке C++ есть и функция или метод string для форматирования (примерно как printf, что-нибудь типа "D:\\Tab%n.txt".format(n)), используйте его.

-- Сб окт 05, 2013 18:33:34 --

illuminates в сообщении #770956 писал(а):
str - строка (string), которая в последствие становится именем файла
Так и назвали бы её тогда filename или path.

 Профиль  
                  
 
 Re: ошибка сцепления строк С++
Сообщение05.10.2013, 16:04 
Заслуженный участник


28/04/09
1933
Для преобразования числа в строку можно воспользоваться:
  • сишными функциями itoa и sprintf,
  • введенной в последнем стандарте функцией (C++11) std::to_string.
Однако для решения задачи сцепления строк в одну лучше всего подходит класс std::stringstream:
Используется синтаксис C++
#include <sstream>

// ...

std::stringstream fileNameBuilder;
std::string fileName;

fileNameBuilder << "D:\\Tab" << n << ".txt";
fileName = fileNameBuilder.str();

 Профиль  
                  
 
 Re: ошибка сцепления строк С++
Сообщение06.10.2013, 09:30 


22/06/12
417
спасибо!

 Профиль  
                  
 
 Re: ошибка сцепления строк С++
Сообщение07.10.2013, 19:03 
Заслуженный участник
Аватара пользователя


19/12/10
1546
Приверженцы минимализма напишут так:
Используется синтаксис C++
fileNameBuilder << "D:/Tab" << n << ".txt";

Ибо так на один символ ленивее :-)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group