2014 dxdy logo

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

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




 
 ошибка сцепления строк С++
Сообщение05.10.2013, 15:20 
добрый вечер! Возникла проблема в программе:

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

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

 
 
 
 Re: ошибка сцепления строк С++
Сообщение05.10.2013, 15:32 
Преобразуйте сначала 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 
Для преобразования числа в строку можно воспользоваться:
  • сишными функциями 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 
спасибо!

 
 
 
 Re: ошибка сцепления строк С++
Сообщение07.10.2013, 19:03 
Аватара пользователя
Приверженцы минимализма напишут так:
Используется синтаксис C++
fileNameBuilder << "D:/Tab" << n << ".txt";

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

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group